How I bypassed Imperva WAF and got my webshell on the webserver to achieve RCE by using just a simple trick.
VIETNAMESE BELOW!!
During a penetration-testing operation for a big organization X in Vietnam, I discover an insecure uploading function that allow attackers to upload any file they want, I tried with various file extension and they all got through without any filtering or validation.
That’s when I know that I should put my webshell in there. Fast forward till I discover this simple aspx webshell: here to achieve remote code execution. I thought there is no way I could achieve this so simply and yep, I was quickly disappointed because the server denied my request to upload that webshell. But I was able to upload a similar aspx-extension file with random content before, there must be a Web Application Firewall or IPS that caught my webshell and quickly denied it from being sent to the server. So my job was to find a way to bypass the WAF/IPS that stood in my way.
The first thing I did was to identify how the WAF detect that it’s a webshell file. I analyzed the code of the webshell and quickly identified the first line which had
<%– ASPX Shell by LT <lt@mac.hush.com> (2007) –%>
That when I thought this might be the signature for the detection. I quickly changed it to
<%– tpd –%>
I then proceeded to upload the file and BOOM! I was able to slip through the WAF and got my webshell uploaded to the server.
In conclusion, I just want to share how I was able to bypass the WAF by just modifying the comment of the webshell. Later on, company X informed that the WAF they are using is Imperva. This is one of the most famous vendor that provides WAF solution and is ranked within top 10 for WAF.
Thanks for reading ~!
Credit to LT <lt@mac.hush.com> for the original webshell
Trong một lần pentest ứng dụng web của một tổ chức X, tôi tình cờ phát hiện ứng dụng web này tồn tại lỗ hổng cho phép upload file tùy ý. Tôi thử upload với các định dạng file khác nhau mà không hề gặp phải lỗi nào. Tôi thầm nghĩ, RCE là đây chứ đâu. Thế là tôi nhanh như một cơn gió tìm ngay được webshell aspx này (ứng dụng web code bằng ASP.NET) để upload với hừng hực khí thế RCE được. Nhưng không!!! Server báo lỗi, rõ ràng lúc trước tôi thử upload aspx file được mà. Tôi thầm nghĩ, chắc có con WAF nào đó chặn tôi rồi, chuyện thường gặp khi đi pentest mà, không sao cả. Công việc của tôi lúc này là tìm cách vượt qua được con WAF đang đứng giữa tôi và RCE.
Việc đầu tiên là tôi phải tìm hiểu xem WAF dectect webshel của tôi dựa trên signature nào. Tôi đọc code của webshell và phân tích, ngay dòng đầu tiên đã có chữ ký của tác giả webshell này
<%– ASPX Shell by LT <lt@mac.hush.com> (2007) –%>
Cũng đáng để coi đó là một signature đó chứ. Thế là tôi thử sửa thành
<%– tpd –%>
và thử upload lại webshell này. Ôi! Thật không thể tin được ! Tôi đã upload thành công webshell chỉ cần thay đổi nội dung comment của tác giả trong code.
Sau đó, tôi được biết WAF mà ứng dụng web này sử dụng là Imperva. Đây là một hãng lớn, sản phẩm WAF thường xuyên nằm trong top 10 thế giới. Trên đây là bài viết của tôi về cách khá đơn giản để bypass WAF. Cảm ơn mọi người đã đón đọc~!
Credit to LT <lt@mac.hush.com> vì bản webshell aspx