HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 29.02.2012, 16:44
Unknown
Guest
Сообщений: n/a
Провел на форуме:
54576

Репутация: 8
По умолчанию

ОБНОВЛЕНИЕ: Актуальная версия 1.1

(/showpost.php?p=3043631&postcount=4)


JComScanner v1.0
Этот сканер представляет из себя простой Python скрипт, возможно есть способы написать его проще, или улучшить функциональность сканера. Именно на Python я программирую только неделю, так что без претензий господа. Это не сканер безопасности, и не программа для взлома, этот скрипт скажет вам какие именно компоненты установлены на сайте.​





Вы должны указать скрипту файл со списком Joomla компонентов, он будет читать по одному и проверять. Простое использование:

Код:
Code:
./jscan.py  http://joomla.org  ./mycomponent_list.txt
или есть возможность запустить с таймаутом, т.е. между подключениями к серверу должно будет пройти определенное время:

Код:
Code:
./jscan.py  http://joomla.org  ./mycomponent_list.txt  10
Перед названием сайта должно быть http://, иначе библиотека urllib2 начнет ругаться. Путь к файлу может быть релативный или абсолютный. Таймаут не обязателен. Аргументы должны задаваться в таком порядке в каком я здесь написал, и никак подругому. Скрипт простой, и там нету каких либо крутых проверок входных данных, т.к. для этого скрипта они в принципе и не нужны.





Код:
Code:
#!/usr/bin/env python

import sys, time, os
import urllib2 as u2

if len(sys.argv)  4:
	print "Usage:"   + sys.argv[0] + "  "
	print "Example:" + sys.argv[0] + " http://joomla.org  ./db.txt"
	exit()

if not os.access(sys.argv[2], os.F_OK):
	print(  "File " + sys.argv[2] + " does not exist or "
		+ "you are not permitted to access to the file")
	exit()

print "[Joomla components scanner by R0nin]\n"
print "[+] Host:", sys.argv[1], "\n\n"
with open(sys.argv[2]) as comfile:
	for line in comfile:
		line = line.strip("\r\n")
		req = u2.Request(sys.argv[1] + "/components/" + line)
		try:
			u2.urlopen(req)
		except u2.HTTPError as hr:
			if hr.code == 404:
				print "Component: " + line.ljust(50,' ') + "[Not found]"
		except u2.URLError as ur:
			print "URL error:", ur.args
			exit()
		except ValueError as vr:
			print "Value error:", vr.args
			exit()
		except KeyboardInterrupt as kierr:
			print "\nInterrupted by user: (CTRL+C or Delete)"
			exit()
		except:
			print "Uknown exception: exit..."
			exit()
		else:
			print "Component: " + line.ljust(50,' ') + "[OK]"
		try:
			if len(sys.argv) == 4:
				time.sleep(int(sys.argv[3]))
		except KeyboardInterrupt as kierr:
			print "\nInterrupted by user: (CTRL+C or Delete)"
			exit()

Скачать базу с названиями компонент: http://pastebin.com/uGGR31LU

На данный момент база с компонентами состоит из 217 разных компонентов. На самом деле существуют их намного больше, поэтому если решите обновить базу залейта его куда нибудь и скиньте ссылка в этой теме

!!! Формат файла с названиями очень простой - на каждой строке пишем одно названием компонента.

Исходник скрипта на PasteBin: http://pastebin.com/VjA5y5HE



Что планируется:

- возможность туннелирования

- более продвинутый механизм сканирования (чтобы не спалить хату) )

 
Ответить с цитированием

  #2  
Старый 29.02.2012, 16:56
m00c0w
Guest
Сообщений: n/a
Провел на форуме:
36927

Репутация: 5
По умолчанию

Я такое многопоточным делал, но проверка только по бажным компонентам)

---

"Перед названием сайта должно быть http://, иначе библиотека urllib2 начнет ругаться"

Что мешает добавлять в самом скрпите, если не стоит 'http://'

простая проверка
 
Ответить с цитированием

  #3  
Старый 29.02.2012, 17:00
Unknown
Guest
Сообщений: n/a
Провел на форуме:
54576

Репутация: 8
По умолчанию

Цитата:
Сообщение от m00c0w  
m00c0w said:
Я такое многопоточным делал, но проверка только по бажным компонентам)
Год назад, такой многопоточный сканер писал на C, исходники потерял. Многопоточность без использования прокси окажется слишком подозрительной)

upd:

Цитата:
Сообщение от None  
Что мешает добавлять в самом скрпите, если не стоит 'http://' простая проверка
Мешает то, что в скрипте будет еще одно не обязательное условие.
 
Ответить с цитированием

  #4  
Старый 01.03.2012, 17:19
Unknown
Guest
Сообщений: n/a
Провел на форуме:
54576

Репутация: 8
По умолчанию

Обновление v1.1



Changelog!: Программа прошла полной переработкой. Ограничения вставленные на входящие аргументы (имеется ввиду порядок записи или обязательный префикс http) уже не действительны. Добавлены новые функция. Работа с аргументами изменена:​

Код:
Code:
optional arguments:
  -h, --help  show this help message and exit
  -u U        Remote site URL
  -f F        Joomla components list file
  -t T        Timeout (sec)
  -T T        Randomization timeout (from 0 to N)
  -p P        HTTP Proxy server (PROXY:PORT)(example: 127.0.0.1:1080)
Объясню только один аргумент (остальное и так понятно): -T - это новая функция, таймаут с рандомизацией, т.е. вы задаете число N а скрипт генерирует случайное число от 0 до N и использует как таймоут.​

Что нового
  1. Поддержка Proxy сервера. К сожалению поддерживается только HTTP прокси (без аутентификации).
  2. Новая функция рандомизации таймаута

Screenshot



[CODE]
Code:
#!/usr/bin/env python

import os
import time
import random
import urllib2 as u2
import argparse as ap

sub_url = "/components/"
#------------------------------------------------------
# Args set
def add_args():
p = ap.ArgumentParser()
p.add_argument("-u", help = "Remote site URL")
p.add_argument("-f", help = "Joomla components list file")
p.add_argument("-t", help = "Timeout (sec)")
p.add_argument("-T", help = "Randomization timeout (from 0 to N)")
p.add_argument("-p", help = "HTTP Proxy server (PROXY:PORT)(example: 127.0.0.1:1080)")
return p.parse_args(), p
#------------------------------------------------------

#------------------------------------------------------
# Timeout
def timeout(args):
if args.T:
time.sleep(random.randint(0, int(args.T)))
elif args.t:
time.sleep(int(args.t))

#------------------------------------------------------
#------------------------------------------------------
# Scan through HTTP server
def scan_through_proxy(args, com_name, op):
try:
url = args.u + sub_url + com_name
op.open(url)
except:
raise
return True
#------------------------------------------------------
#------------------------------------------------------
# Scan directly
def scan(args, com_name):
try:
url = args.u + sub_url + com_name
req = u2.Request(url)
u2.urlopen(req)
except:
raise
return True
#------------------------------------------------------

a, p = add_args()
if not a.u or not a.f:
p.print_usage()
p.exit()
else:
if a.u.find("http://")
 
Ответить с цитированием

  #5  
Старый 01.03.2012, 17:36
Lilo
Moderator - Level 7
Регистрация: 10.03.2009
Сообщений: 1,013
Провел на форуме:
6183433

Репутация: 1521


По умолчанию

бесполезная штука//вручную проще

за старание +
 
Ответить с цитированием

  #6  
Старый 01.03.2012, 17:44
Unknown
Guest
Сообщений: n/a
Провел на форуме:
54576

Репутация: 8
По умолчанию

Цитата:
Сообщение от Lilo  
Lilo said:
бесполезная штука//вручную проще
за старание +
Сколько людей столько мнений)

p.s. оказывается допустил логическую ошибку, там где должно было быть

Код:
Code:
if exp and exp: ...
написал

Код:
Code:
if exp or exp: ...
.

Ошибку исправил, код перезалил.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ