1.侦察
nmap扫描一波
一个商城
给出的域名为nahamstore.thm
先进行子域名枚举
使用ffuf进行子域名枚举
ffuf -w /home/kali/Desktop/payloads/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.nahamstore.thm" -u http://10.201.97.174 -t 100
-w字典, -H枚举目标域名 FUZZ为枚举位置, -u 为目标URL -t 设置线程
注意: 当访问不存在的域名时或许也会返回200响应码,我们需要找出其响应大小 通过-fs参数过滤出正确存在的域名
-fs
你会注意到我的响应大小不是固定的,而是动态的,不过没关系,通过观察发现这些错误的响应大小在910-940之间浮动
最终payload
ffuf -w /home/kali/Desktop/payloads/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.nahamstore.thm" -u http://10.201.97.174 -t 100 -fs 910-940
将他们添加到/etc/hosts 主机配置中
10.201.97.174 marketing.nahamstore.thm
10.201.97.174 shop.nahamstore.thm
10.201.97.174 stock.nahamstore.thm
注意到生成PDF功能
当输入1时 会显示不存在 id应该是带入代执行了
我们知道在Linux中 ` 反引号包围的内容为要执行的命令 系统会执行该命令 并且将结果替换命令
在参数5后面加上`id``whoami`等
成功执行了
考虑用反弹shell接管
使用在线网站生成反弹shell命令
记得编码成URL
发现了三个隐蔽的域名
172.17.0.1 nahamstore-2020-dev.nahamstore.thm
172.17.0.1 nahamstore-2020.nahamstore.thm
10.131.104.72 internal-api.nahamstore.thm
添加到host中 将ip改为靶机的
除了使用gobuster 我们也可以使用dirsearch工具
maurosoria/dirsearch: Web path scanner
得到第一问答案
2.XSS
<script>alert(1)</script>
1.直接获取UA头导致的XSS
在创建订单的时候 我们发现订单细节处会读取创建时的UA头
通过将UA头改为<script>alert(1)</script>
可实现XSS攻击
2.参数未转义
在返回信息进行XSS失败 但是发现URL存在一个参数
尝试替换为JS代码
<script>alert(1)</script>
成功回显
3.q参数直接带入代码变量导致的XSS
搜索框:
插入js代码失败 发现>和<被转义
继续往下找
发现被带入代码执行了
';alert(1);'
4.报错界面信息参数体现在URL导致XSS
4.标题参数存在URL导致XSS
在首页点击 图片 发现解析了标题 并且有源码 通过添加</title>来插入XSS代码
</title><script>alert(1)</script>
5.测试词被反映并包裹在一个textarea标签中导致XSS
</textarea><script>alert(1)</script>
6.未进行转义的目录接口导致xss
7.隐藏参数未过滤”
我们看见不可见的参数
通过BP抓包 使用get 我们能够得到所有参数
注意到嵌入的< >符号被直接过滤了
但是“ 没有被进行过滤
使用
" οnmοuseοver="alert('XSS')
当鼠标移动到折扣码输入框时 触发XSS
3.重定向
1.隐藏重定向接口
重定向的特点就是http://nahamstore.thm/xxx加上参数?=http://www.baidu.com
使用fuff来模糊遍历参数
r参数为302重定向响应码
猜测r为参数
重定向到谷歌
2.未登录跳转重定向
总所周知,用户未登录时,重定向功能是最常见的,当所需功能点需要登录后才能使用时,变会出现重定向
在访问basket功能时出现重定向
将其更改为http://google.com
4.CSRF 跨站请求伪造Cross-Site Request Forgery
当把CSRF_protect删除后
发现未授权访问
且为base64编码
5.IDOR 不安全的直接对象引用
任意修改address_id可以获取任意用户地址信息
PDF生成里面 id参数可以任意修改
改为3
发现进行了验证
不要慌
加上%26user_id=3 其中 %26为&的URL编码
没错! 成功了
6.LFI 本地文件包含
本地包含文件漏洞一般出现服务器访问了本地的文件
因此图片这种保存在本地的资源容易产生该漏洞
尝试访问却没有
逐个添加../也无济于事
这时候我应该明白,路径进行了过滤
进行尝试
发现是对../进行了删除过滤
那么便好办了 使用..././过滤 系统删除../ 剩下的仍为../
最终成功payload:
..././..././..././..././..././/lfi/flag.txt
应该是flag被以图片形式返回了
抓包看看
7.SSRF 服务端请求伪造 Server Side Request Forgery
我们注意到检查库存有一个服务器参数
server很可能是一个需要输入URL的参数
1. @
符号的作用:用户信息分隔符
在URL的权威格式中(遵循RFC 3986),@
符号用于分隔用户信息和主机名。
2. #
符号的作用:片段标识符
在URL中,#
及其后面的所有内容被称为“片段”,主要用于在浏览器中定位到页面的某个锚点。关键的一点是:这个片段不会被发送到服务器端。
我们注意到之前服务器的internal-api.nahamstore.thm直接访问没有显示
构造出stock.nahamstore.thm@internal-api.nahamstore.thm#尝试访问
拼接上orders
成功得到 继续拼接id
找到目标信用卡号码
8.XXE (XML外部实体)
XML外部实体注入(也称为XXE)是一种Web安全漏洞,允许攻击者干扰应用程序对XML数据的处理。它通常使攻击者能够查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后端或外部系统进行交互。
在查看产品处拼接?xml 回显表明该接口存在
payload:
X-Token= 1000
<?xml version="1.0"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///flag.txt'>]>
<root>
<X-Token>
&test;</X-Token>
</root>
在此界面 我们注意到可以上传xlsx文件
我们不能放弃hack的机会
过程有点复杂 只放结果
9.RCE 远程命令执行
发现/admin/login
尝试弱口令admin admin成功
还记得刚开始的侦察 我们已经利用反引号` 成功进行了RCE
10.SQL注入
添加单引号报错
直接使用sqlmap
在sqli_one表得到flag
在请求包中
保存请求包