at 7 Elements • Love coding (parJcularly Ruby) • @marcwickenden on the TwiOerz • Most importantly though….. www.7elements.co.uk | blog.7elements.co.uk | @7elements
• IntroducJon to the Eclipse IDE • Burp Extender Hello World! • ManipulaJng runJme data • Decoding a custom encoding scheme • “Shelling out” to other scripts • LimitaJons of Burp Extender • Really cool Burp plugins already out there to fire your imaginaJon
extend the funcJonality of Burp Suite” • “Extensions can read and modify Burp’s runJme data and configuraJon” • “iniJate key acJons” • “extend Burp’s user interface” hOp://portswigger.net/burp/extender/
CLI or in JAR META-‐INF/MANIFEST.MF) and starts public sta0c void main method • You’ve seen this already with Burp: • java –jar burpsuite_pro_v1.4.12.jar
de facto free dev tool for Java • Not necessarily the best or easiest thing to use • AlternaJves to consider: • Jet Brains IntelliJ (my personal favourite) • NetBeans (never used) • Jcreator (again, never used) • Terminal/vim/javac < MOAR L33T
• Due to licensing (I think) this is no longer the case • Grab from Sun Oracle’s website: • hOp://download.oracle.com/otn-‐pub/java/jdk/7u7-‐b11/jdk-‐7u7-‐windows-‐ x64.exe?AuthParam=1347522941_2b61ee3cd1f38a0abd1be312c3990fe5
ImplementaJons must be called BurpExtender, in the package burp, must be declared public, and must provide a default (public, no-‐argument) constructor”
to the console? • We defined processHOpMessage() • hOp://portswigger.net/burp/extender/burp/ IBurpExtender.html • “This method is invoked whenever any of Burp's tools makes an HTTP request or receives a response”
the HTTP Headers from FI body • Decode FI body • Display in Burp • Re-‐encode modified version • Append to headers • Send to web server • Then the same in reverse
response • Just do the same in reverse • processHOpMessage fires before processProxyMessage so we can’t alter then re-‐encode message • SoluJon: chain two Burp instances together