本文僅為了學習交流,嚴禁非法使用!!!
(隨筆僅為平時的學習記錄,若有錯誤請大佬指出)
1.分析一下存在漏洞文件 logincheck_code.php



從代碼中我們可以控制的有UID,CODEUID然后判斷$login_codeuid是否存在,不存在或者為空就退出,然后將獲取的UID,帶入到sql語句進行查詢,后面會驗證查詢的結果,如果信息核對正確,則將個人信息放入到SESSION中,UID=1的時候默認是管理員,而UID我們可以輸入一個1,就可以滿足查詢ql,而我們現在要繞過if (!isset($login_codeuid) || empty($login_codeuid)){exit();},全局搜索一下$login_codeuid可不可以控制
2.分析一下/general/login_code.php,發現存在$login_codeuid


如果$login_codeuid為空,則給$login_codeuid賦一個隨機值,並且使用echo打印出來
3.那我們的思路是:先去訪問/general/login_code.php,獲得$login_codeuid,再去訪問logincheck_code.php,同時POST傳入獲取的$login_codeuid和UID=1,獲得返回包的PHPSESSID,在使用火狐瀏覽器偽造COOKiE,登錄后台
4.漏洞復現

將獲得的code_uid保存下來,進行下一步

將獲取的PHPSESSID保存下來,使用火狐瀏覽器偽造COOKIE,同時訪問/general/index.php,便可以進入后台

5.后台GetShell(靶機環境windows7 通道OA用的是MYOA2017)
依次點擊系統管理-附件管理-添加存儲目錄,選擇根目錄


6.依次點擊組織-系統管理員-附件(下圖標注)

7.直接上傳shell.php不能成功,開啟抓包,上傳shell.php.進行繞過,windows系統會自動去掉.,不符合windows的命名

8.使用冰蠍進行連接

9.實戰(由以上的思路,進入到某站的OA后台管理系統)

10.修復建議
升級通達 OA 到最新版
參考文章
https://www.chabug.org/audit/1516.html
https://blog.csdn.net/sun1318578251/article/details/105728541/
此文檔僅供學習,參與違法行為與筆者無關。
