環境搭建
下載地址:https://gitee.com/oufu/ofcms/repository/archive/V1.1.2?format=zip
SSTI模板注入(freemaker)
FreeMarker模板注入實現遠程命令執行 - Eleven_Liu - 博客園
在admin中找到這個
發現請求的是這個
找到他
<#assign value="freemarker.template.utility.ObjectConstructor"?new()>${value("java.lang.ProcessBuilder","calc.exe").start()}
這么輸入然后保存
刷新
文件上傳
查看源代碼可以發現
這個是通過新建file來改文件的所以我們可以直接從后端來改
改成后門就可以造成文件上傳漏洞
XSS
56:代碼審計-JAVA項目Filter過濾器及XSS挖掘 - zhengna - 博客園
先看看
有沒有xssfilter過濾器
發現都只存在與前端,那就相當于沒有了
那直接隨便找就可以找到xss了
sql注入
跟普通的sql注入不一樣,他是直接執行sql語句,不是直接的參數傳入
直接跟進到代碼
int update(Config config, Connection conn, String sql, Object... paras) throws SQLException {PreparedStatement pst = conn.prepareStatement(sql);//做了預編譯,但是沒有傳入參數所以沒有用config.dialect.fillStatement(pst, paras);int result = pst.executeUpdate();//這里直接執行傳入的sql語句DbKit.close(pst);return result;
}
注意這個是excuteupdata所以他只會執行這種update,insert,delete這種函數,而且不會有回顯,就相當于直接執行sql語句
成功操作,由于沒有回顯所以我們得使用報錯注入
INSERT INTO of_sys_user_site (user_role_id, role_id, site_id, status) VALUES (6, extractvalue(1,concat(0x7e,user(),0x7e,version(),0x7e)), 6,5);
XXE漏洞
JRXmlloader
首先先搜索jrxmlloader
看這些類之中有哪個實現這個代碼的
這里有個小技巧:因為這些類都是導入的jar包內部的,這說明,不是每個類和方法都會被使用到;
與之不同的則是項目自己寫的類和方法,一般都會被用到。
因此:我們可以先查找類中方法的調用,確定有沒有使用到,沒有使用到就不用管了,這樣可以節省大量的時間。
發現到一個,而且被writeapi調用
可以看到,同類下的execute()
方法對其有調用,但是通過查找execute()
的調用,發現并沒有被使用。因此,此處就不需要再往下進行了。
例如:
找到一個這個,find in usages
發現被這么調用
找到前端調用的接口、
先上傳一個文件到這個目錄下
寫入xxe的文件
成功反彈
xmlreader
也是像上面的方法一樣一起找
找到了這個類
但是找使用run的類發現有很多,但是不是由run傳進來的,就不知這個方法的參數是否可以調用
發現是從這里調用的
博主累了,后面就先不分析了