Volume 0x0e, Issue 0x43, Phile #0x07 of 0x10
|=-----------------------------------------------------------------------=|
|=------=[ ProFTPD with mod_sql pre-authentication, remote root ]=------=|
|=-------------------------=[ heap overflow ]=---------------------------=|
|=-----------------------------------------------------------------------=|
|=-------------------=[ max_packetz@felinemenace.org ]=------------------=|
|=-----------------------------------------------------------------------=|
--[ Contents
1 - Introduction
2 - The vulnerability
2.1 - Tags explained
2.2 - Generating overflow strings
3 - Exploring what we can control
3.1 - Automating tasks
3.2 - ProFTPD Pool allocator
3.3 - Examining backtraces
3.3.1 - 11380f2c8ce44d29b93b9bc6308692ae backtrace
3.3.2 - 2813d637d735be610a460a75db061f6b backtrace
3.3.3 - 3d10e2a054d8124ab4de5b588c592830 backtrace
3.3.4 - 844319188798d7742af43d10f6541a61 backtrace
3.3.5 - 914b175392625fe75c2b16dc18bfb250 backtrace
3.3.6 - b975726b4537662f3f5ddf377ea26c20 backtrace
3.3.7 - ccbbd918ad0dbc7a869184dc2eb9cc50 backtrace
3.3.8 - f1bfd5428c97b9d68a4beb6fb8286b70 backtrace
3.3.9 - Summary
3.4 - Exploitation avenues
3.4.1 - Shellcode approach
3.4.2 - Data manipulation
4 - Writing an exploit
4.1 - Exploitation via arbitrary pointer return
4.2 - Cleanup structure crash
4.3 - Potential enhancements
4.4 - Last thoughts
5 - Discussion of hardening techniques against exploitation
5.1 - Address Space Layout Randomisation
5.2 - Non-executable Memory
5.3 - Position Independent Binaries
5.4 - Stack Protector
5.5 - RelRO
6 - References
--[ 1 - Introduction
This paper describes and explores a pre-authentication remote root heap
overflow in the ProFTPD [1] FTP server. It's not quite a standard overflow,
due to the how the ProFTPD heap works, and how the bug is exploited via
variable substition.
The vulnerability was inadvertently mitigated (from remote root, at least
:( ) when the ProFTPD developers fixed a separate vulnerability in mod_sql
where you could inject SQL and bypass authentication. That vulnerability
that mitigated it is documented in CVE-2009-0542.
The specific vulnerability we are exploring is an unbounded copy operation
in sql_prepare_where(), which has not been fixed yet.
Also, I'd like to preemptively apologise for the attached code. It evolved
over time in piecemeal fashion, and isn't overly pretty/readable by now :p
Read Full Article
0 comments:
Post a Comment